Release Notes for P4, the Helix Command Line, P4D, the Helix Versioning Engine P4P, the Helix Proxy and P4Broker, the Helix Broker Version 2020.1 Introduction This document lists all user-visible changes to: * Helix Versioning Engine (P4D) * Command line client (P4) * Helix Proxy (P4P) * Helix Broker (P4Broker) in 2020.1 release. Release notes for other Perforce Helix products are available separately on the Perforce Documentation web page. Developer notes for Perforce API programming, the Helix Broker and also a separate document which programmers should read in addition to this release note document. Perforce numbers releases YYYY.R/CCCCC, e.g. 2002.1/30547. YYYY is the year; R is the release of that year; CCCCC is the bugfix change level. Each bugfix in these release notes is marked by its change number. Any build includes (1) all bugfixes of all previous releases and (2) all bugfixes of the current release up to the bugfix change level. Both 'p4' and 'p4d' will report their version information by passing the '-V' flag. Additionally, 'p4' can report the server's information with the 'p4 info' command. Version information includes a release version and a build change number. The build change number can be compared with change numbers and patch information mentioned in the matching version release notes file to determine if a particular build of a version includes the change mentioned. Supported Platforms for p4d, p4, p4p and p4broker Linux kernel 2.6+ (glibc 2.6+) for Intel(x86, x86_64) Windows 8.1 for Intel(x86, x64) Windows 10 for Intel(x86, x64) Windows 2012 for Intel(x64) Windows 2016 for Intel(x64) Windows 2019 for Intel(x64) Apple OS X 10.12+ for Intel(x86_64) -------------------------------------------------------------------------- Important Platform End-of-Life Notice This notice identifies the platforms that will be placed in End-of-Life (EOL) status on October 2020. This applies to p4, p4d, p4p, p4ftp, and p4broker components of the server release. The following platforms have entered the Obsolescent phase in this release: Mac OS X 10.5, 10.6, 10.7, 10.8, 10.9(x86, x86_64), 10.10(x86_64) 10.11(x86_64) Linux kernels (glibc < 2.6) for Intel(x86, x86_64) Windows 2008 for Intel(x86_64), Windows 8 for Intel(x86, x64) OBSOLESCENT Phase: Starting with this release,these platforms will no longer be supported. Customers will receive full support and patches for the deprecated platforms during this phase for older releases. The platforms will remain in this phase until October 2020 after which they will transition into the discontinued phase. DISCONTINUED (EOL) Phase: Patches will no longer be issued for these platforms. We will no longer provide technical support to customers with servers on these platforms -------------------------------------------------------------------------- Important limitation for Windows server Support for Helix Core Extensions was disabled for Windows servers due to unrelated performance concerns on that platform requiring a conflicting toolchain change. Extensions remain fully supported on Linux and Mac. -------------------------------------------------------------------------- Important security note This release links OpenSSL version 1.1.1k. -------------------------------------------------------------------------- Important export note This product is subject to U.S. export control laws and regulations including, but not limited to, the U.S. Export Administration Regulations, the International Traffic in Arms Regulation requirements, and all applicable end-use, end-user and destination restrictions. Licensee shall not permit, directly or indirectly, use of any Perforce technology in or by any U.S. embargoed country or otherwise in violation of any U.S. export control laws and regulations. -------------------------------------------------------------------------- Upgrading the Server ** IMPORTANT UPGRADE NOTES ** CHANGES TO DISTRIBUTED UPGRADE RECOMMENDATIONS For 2019.1 or later of the Helix Versioning Engine (P4D), significant schema upgrades performed by 'p4d -xu' will only be performed on servers where those upgrades are needed. This means that metadata changes made by upgrades must be replicated and so must be journaled. To help prevent mistakes, upgrades will not run if journaling is disabled. If offline databases are in use, upgrades should not be performed on them, as the upgrade performed on the live database will be journaled and applied during normal journal replay. When upgrading from 2019.1 or later of the Helix Versioning Engine (P4D), replicas may be upgraded safely prior to the server they are replicating from. This upgrade pattern, referred to as "outside-in", allows a multi-server environment be upgraded server-by-server starting with the outermost replica, without requiring the entire set of servers to be taken offline at once. When upgrading from a version prior to 2019.1 to 2019.1 or later, we strongly recommend that all servers are upgraded in a single upgrade session. More information can be found in the Helix Core Server Administrator Guides: https://www.perforce.com/manuals/p4sag/Content/P4SAG/chapter.upgrade.html https://www.perforce.com/manuals/p4dist/Content/P4Dist/intro.maintaining.html ------------------------------------------------------------------- CHANGES TO UNLICENSED SERVER For v16.1 onwards of the Helix Versioning Engine (P4D) the number of free users allowed with an unlicensed server has changed to 5, the number of clients remains at 20. Previous versions of the server will continue to support the 20/20 usage allowance. ------------------------------------------------------------------- BEFORE UPGRADING To upgrade your Helix Versioning Engine (P4D), your Perforce license file must be current. Expired licenses do not work with upgraded servers. In addition to your usual checkpointing scheme, always checkpoint your server immediately before undertaking an upgrade. For any Helix4Git instances that are currently polling repos we recommend upgrading your Helix4Git instance before upgrading your Helix Versioning Engine. Otherwise, any repo polling would cease. Read-only archive directories can interfere with the upgrade process. This may be the case for archive paths migrated from a different version control system, such as CVS, or in cases where 3rd party imported content has been made read only by a system admin. Make sure all such archive paths are writeable before attempting the upgrade. DOWNGRADING A 2020.1 SERVER IS NOT POSSIBLE UPGRADING PROCEDURE IS DIFFERENT DEPENDING ON WHAT YOUR CURRENT PERFORCE VERSION IS: UPDATE DATABASE SCHEMA vs UPDATE DATABASE FORMAT ------------------------------------------------------------------- ** UPDATE DATABASE SCHEMA If your current server version is 2013.3 or above, then this upgrade is a UPDATE DATABASE SCHEMA upgrade: Unix Platforms 1. Issue the 'p4d -r -J -xu' command. This command performs the significant schema upgrades, then exits. 2. Restart your server with your site's usual parameters. Windows Platforms 1. Issue the 'p4d -r -J -xu' command from a command prompt window. This command performs the significant schema upgrades, then exits. 2. Restart your Helix Versioning Engine (P4D) service. Note: Personal DVCS servers will automatically perform any database schema upgrades; whilst the upgrade steps described above are unnecessary for these servers, they are safe to run. ------------------------------------------------------------------- ** UPDATE DATABASE FORMAT If your current server version is 2013.2 or earlier, then this upgrade is an UPDATE DATABASE FORMAT upgrade: Due to the btree format introduced in 2013.3 this is not an UPDATE DATABASE SCHEMA upgrade. A checkpoint using your old server and then a restore using the 2020.1 server is required before the internal upgrades 'p4d -xu' (if required) can be performed. Note: If you have made use of the (undocumented) '+T' modifier (storing file content in the tiny.db database) this data is not checkpointed (and therefore not restored). See 'p4 help undoc' for backup/restore procedures for this table. Once the database has been restored with the 2020.1 version, update your database schema: Unix Platforms 1. Issue the 'p4d -r -J -xu' command. This command performs the schema upgrades, then exits. 2. Restart your server with your site's usual parameters. Windows Platforms 1. Issue the 'p4d -r -J -xu' command from a command prompt window. This command performs the schema upgrades, then exits. 2. Restart your Helix Versioning Engine (P4D) service. -------------------------------------------------------------------------- Interoperating With Previous Releases 1. Unless stated otherwise you can intermix any release of Helix Command Line (P4) with any release of the Helix Versioning Engine (P4D), but any functionality new to 2020.1 requires you to upgrade the client and/or P4D. See marks in the notes below. * -- requires new p4 client program including all client applications and derived APIs ** -- requires new p4d server program *** -- requires new p4p proxy program **** -- requires new p4broker broker program Any replica servers must be at least the same release level as the master server and any functionality that requires an upgrade for the master requires an upgrade for the replica. A replica can be running a later release than the master if the master is running at least 2019.1. However in this case some new functionality might not be available on the upgraded replica until the master has been upgraded. 2. Beginning with 99.2, remote depots will interoperate between UNIX and NT. Beginning with 98.2, remote depots will interoperate across (98.2 and higher) releases. In 98.1 and before, remote depots will only operate with another server of the same release. 3. As of 2005.1, remote depot support for 98.2 and 99.1 servers has been dropped. Attempts by 98.2 and 99.1 servers to contact 2005.1 servers still works, but the depots will appear devoid of files. -------------------------------------------------------------------------- Technology Preview features: Technology Preview features are currently unsupported, might not be functionally complete, and are not suitable for deployment in production. These features are provided to the customer to solicit interest and feedback, with the goal of full support in future releases. Customers are encouraged to provide feedback and functionality suggestions for Technology Preview features before they become fully supported. -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r20.1/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Major new functionality in 2020.1 (2020.1/1953492) #1928573 (Job #95458) ** The new 'p4 heartbeat' command can be run on a standby server to monitor the responsiveness of its target master server. Although this was designed for use with 'p4 failover', this command can be used to monitor any server. This command makes requests at regular intervals, waits for responses, and fires triggers when responses are missed, resumed after missing responses were detected, and when a maximum number of missing responses are detected. These new triggers are respectively 'heartbeat-missing', 'heartbeat-resumed', and 'heartbeat-dead'. See 'p4 help heartbeat' for more information. #1916178 (Job #101042) ** Permissions for stream spec edits have been added. Similar to file permissions, the new permissions readstreamspec, openstreamspec, writestreamspec control user access for editing a stream definition. Pre 2020.1 access to stream specs continues unchanged until any new streamspec permission is added for any user to the protect table, at which point all users except super and admin will require streamspec permissions. These new permissions do not apply to files paths in streams. NOTE: When adding streamspec permissions, care must be taken that users having legacy stream read and write access are given the necessary streamspec permissions. To make ease this transition there is a new configurable: 'dm.protects.streamspec'. By default disabled (dm.protects.streamspec=0), stream spec perms are ignored and legacy stream spec access control is applied. Stream spec permissions entered in the table are ignored. Setting dm.protects.streamspec=1 enables these permissions thus requiring read/open/write stream spec access be granted by explicit stream spec permissions. 'p4 protects [-A] [-S] reports stream spec permissions. If stream spec permissions are disabled ('dm.protects.streamspec=0') the stream spec permissions are reported and followed with this message: 'Stream spec permissions currently disallowed. Set dm.protects.streamspec=1 to enable.' See: p4 help protect For examples, see: https://www.perforce.com/manuals/cmdref/Content/CmdRef/p4_protect.html #1881458 (Job #53502, #94888, #96926) ** Structured logging improvements. All event types have a new version N.50 this release which adds a unique command identifier and the current serverId after the command number field (5th column). For commands that result in log events being written on multiple servers, the unique command identifier will be visible to allow those events to be matched up. Examples include submits from edge servers, replica forwarded commands, remote depot access and P4AUTH. The 11.50 trigger event type has two additional fields: f_triggerType (which is one of 'trigger', 'extension' or 'bgtask') and f_triggerLapse (which records the trigger execution lapse time). Trigger arguments are now separated by ':' characters to match the command arguments format. The 'serverlog.version.N' configurable can be used to pin a structured log file to a specific server version's format. To retain the prior structured log events format, set the 'serverlog.version.N' configurable to 49. Minor new functionality in 2020.1 (2020.1/1953492) #1945406 (Job #99520) ** The performance of 'p4 tag' run against an autoreload label with many arguments has been improved. #1932783 (Job #75680) ** Global labels may now be updated from edge servers using either 'p4 tag -g' or 'p4 labelsync -g'. #1922742 (Job #101428) ** The host field in the protections table now allows multiple IP addresses or CIDR matchers to be specified on a single line by comma separating them. #1917799 (Job #101213) ** A new --no-graph flag for 'p4 have' is added that affects mixed environments where the client view includes both graph and non-graph type depots. This flag will filter 'p4 have' output to non-graph files only. #1912695 (Job #78482, #75001, #83402, #87328, #74235, #93294) ** The 'p4d -xx' integrity check now covers the following table pairs: db.integtx/db.revtx db.revtx/db.rev db.revtx/db.stream db.revbx/db.rev db.have/db.domain dbchange/db.changeidx db.rev/db.change Additionally, neither 'p4d -xx' nor 'p4d -xv' will run against an empty P4ROOT. Exit codes now reflect whether inconsistencies have been detected. #1905882 (Job #97780) * ** TLS 1.3 is now available for use with SSL P4PORTs. Set the ssl.tls.version.max configurable to '13' to enable it (12 is the default). TLS 1.3 is ~65% faster at file transfers than 1.2, but the overhead of establishing a 1.3 connection is ~68% higher, so applications that rely on many short-lived connections may wish to pin their version to 1.2 if using a 1.3-enabled server. Note that the higher the latency, the less the connection overhead matters. #1903396 (Job #100984) ** Now a preview of an unshelve of a stream spec will give an error if the current stream is not the same as shelved stream spec. The error reported is "Shelved stream %shelvedStream% does not match client stream." #1889887 (Job #99233) ** The scan of the protections table at command start is now lockless. This means that updates to the protections table on busy servers will experience far less lock contention. #1885312 (Job #100832) ** The sequence numbers used in db.protect are no longer contiguous. This allows new lines to be added without rewriting the whole table. #1883731 (Job #90188) ** The new 'p4 retype -f' flag allows files to be retyped, even if the archive is missing. #1881258 (Job #89173, #99926) ** 'p4 protects -M' now supports the '-h' flag for querying the protections with a specified IP address. Additionally, a new '-H' flag may be used with any 'p4 protects' command to query the protections with the current connection's resolved IP address. #1874297 (Job #96602) ** The 'p4 graph log' command has two changes. One is an optional 'tree' value for the '--oneline' option, so the option can be entered as '--oneline=tree'. This adds a column in the output for tree-sha values. A second change is a new option '--no-abbrev'. This option causes sha values in the output to appear in the original 40 characters, instead of the default 7 characters abbreviation. #1870407 (Job #97632) ** Previously a stream specification could not be unshelved to a workspace where the spec was opened for edit. Now unshelving a stream spec when it is opened in a workspace schedules a resolve. The unshelving action is completed once the stream spec has been resolved. #1868386 (Job #97929) ** The performance of 'p4 revert' where many moved files are being reverted has been improved. Bugs fixed in 2020.1 Patch 12 (2020.1/2298664) #2292440 (Job #110708) ** 'p4 login' for a LDAP authenticated user will no longer report a password expiry message if the user has an expired password stored in the database. #2271158 (Job #108415) ** Globally locking a file from an edge server that is in the process of being shelved from the same workspace will no longer result in the shelve operation removing the lock on the edge server. #2270125 (Job #109709) ** Opening large numbers exclusive locked (+l) files on an edge server is now far more efficient. #2263613 (Job #109847) ** When a file with type "ktext" is moved, integrated, then shelved, if another client unsheleves it and then try to shelve it, shelve can fail with "tampered with after resolve" error. This change fixes the problem. #2263204 (Job #109890) ** A transmit error during the transfer of files between an edge and commit server for a shelve operation would incorrectly delete the archives of any lazy-copied revisions within the shelf. This has been fixed. #2254703 (Job #109616) ** Replicating a journal containing older versions of database records can crash the commit server. This has been fixed. Bugs fixed in 2020.1 Patch 11 (2020.1/2238366) #2233252 (Job #108864) ** Ensure tagged 'p4 groups -v' is lockless against db.user. #2230655 (Job #108692) ** The command 'p4 graph verify' that was missing in 'p4 help-graph commands', is added there. #2229990 (Job #108693) ** The command 'p4 help verify' is changed to mention 'p4 help-graph verify'. #2228626 (Job #96885) ** A concurrent parallel submit and revert in the same workspace could turn off search permission on the clientEntity/0,d serverlock directory. This has been fixed. #2225054 (Job #108613) ** Starting a server with the -v command line option set to just a number without logging category no longer causes an crash. #2224928 (Job #108934) * ** *** **** The SSL handshake timeout configurable 'ssl.client.timeout' is no longer overridden by shorter 'net.maxwait' configurable value. #2222740 (Job #108767) ** The 'p4d -xx' consistency check between db.change/db.desc now correctly detects mismatches between the truncated and the complete descriptions. #2216652 (Job #108691) ** Graph depot commands when issued with missing or wrong number of arguments were displaying "Usage: see p4 help graph". These have been corrected to display "Usage: see p4 help-graph". #2204224 (Job #107572) ** Running 'p4 sync' or 'p4 print' from a commit server could report librarian errors when the requested archive files had not yet been fetched from the originating edge server during background submit. This has been fixed by allowing those archives to be fetched on demand. #2197400 (Job #108045) ** In a rare case an internal context structure can be NULL. This error condition is now caught and reported. #2186477 (Job #107943) ** 'p4 stream -ov' can now be run against non-existing streams when the 'dm.protects.streamspec' configurable is set to 1. Bugs fixed in 2020.1 Patch 10 (2020.1/2187281) #2183174 (Job #105430) ** Sometimes a merge resolve incorrectly joins the last two lines of one part of the merge. This could occur if an end-of-line character was missing on the last line of the file for the base, source, or target. This is now fixed when new configurable merge.dl.endeol, which defaults to 0, is set to 1. However, some cases that might resolve correctly without the configurable being set might now register a conflict that must be resolved manually. #2182410 (Job #107762) ** Commands awaiting replication will no longer be inordinately delayed by a journal rotation on the upstream server. Bugs fixed in 2020.1 Patch 9 (2020.1/2179928) #2176143 (Job #107796) * ** *** **** OpenSSL has been upgraded to 1.1.1k #2175266 (Job #107736) ** OpenLDAP has been upgraded 2.4.59 #2175089 (Job #107513) * ** SQLite (for extensions) has been upgraded 3.36.0 #2174313 (Job #105082) * ** cURL (for extensions) has been upgraded 7.75.0 #2174312 (Job #105082) * ** Lua (for extensions) has been upgraded 5.3.6 #2174311 (Job #105082) * ** Lua-cURLv3 (for extensions) has been upgraded 0.3.12 #2165146 (Job #107505) ** Cyrus-SASL has been patched to address CVE-2019-19906. #2152761 (Job #106143) ** The 'pull -u' threads on a standby server to a commit server could fail to transfer archives from a promoted shelved change when there is latency between the commit server and the edge server causing slow transfer of archives to the commit server. This has been addressed by allowing 'pull -u' threads on standby servers to retry transfers of missing archives. #2151259 (Job #107115) ** Errors encountered while journalcopy'ing in a background thread that are reported to the standby or forwarding-standby's server log will no longer be missing parts of the error message. #2147013 (Job #106795) ** Fixed undo problem, a source file is integrated, then a source file revision is undone in the previous integration range, and a later integration attempt claims that all revisions were already integrated. Now the configurable dm.integ.undo, and the integration option 'p4 integ -Ru', will fix this problem by only creating integration credits for previous integrations that were not in an undo revision range. #2145945 (Job #106998) ** 'p4d -xx' now creates more consistent placeholder change records during the db.rev/db.change table pair integrity check. #2141351 (Job #106645) ** 'p4 storage -d -y' now releases all table locks while deleting or moving archives. #2141079 (Job #106796) ** Updated p4 help resolve to distinguish between resolving with auto-merge ('p4 resolve -am') and resolving manually with an accept merge ('p4 resolve' and choose the 'am' option). Resolving with auto-merge will not guarantee that all integrations will be merges, only that the choice is automated and merge will be chosen when optimal. Bugs fixed in 2020.1 Patch 8 (2020.1/2138914) #2134823 (Job #104926) ** 'p4 unshelve' now correctly tracks temporary shelve copies created for pending resolves on edge servers in db.storagesh. #2132217 (Job #106579) ** The unlicensed limit on the repo count has been changed to 3. #2132013 (Job #106209) ** The license file now supports exposing extra capabilities to be used for centralised licensing of add-on products. #2129715 (Job #106628) ** Under specific conditions that cannot normally occur, a file open for integrate but without any resolve records could cause the server to crash during submit. This has been fixed. #2124833 (Job #106380) ** Missing archives were sometimes not reported by 'p4 verify -z'. This has been fixed. #2124827 (Job #105391) ** The performance of verifying archives using the storage tables has been improved. ('p4 verify -Z', p4 storage -v') #2120346 (Job #106310, #90948) ** The 'pull -u --batch' command could excessively retry its batch when any transfer error occurred, causing the pull thread to stall instead of moving on to request other archives. This was due to a regression that was introduced in 2019.2 by a fix to allow 'pull -u --batch' to resume after a failed connection. Both of these bugs have been fixed. #2119372 (Job #104527) ** Fix for wrong stream view generation with an embedded wildcard. If a stream is a grandchild of the mainline, and has a one parameter import path, and share paths which are contained in the import path, then the view generated for the first share path with an embedded wildcard would be incorrect. This problem only occurred on Linux and Windows platforms. #2117410 (Job #106130) * The client-side threading for parallel sync no longer shares charset converters, preventing race conditions during translation of unicode type files which could corrupt the files in the workspace. #2108753 (Job #104119) ** Fix to allow a file in a virtual stream to be opened and submitted if the file is in a share stream path with an embedded wildcard. Bugs fixed in 2020.1 Patch 7 (2020.1/2107780) #2105325 (Job #105997) * ** *** **** OpenSSL has been upgraded to 1.1.1k #2101465 (Job #105817) ** The 'p4 extension --run' command no longer defaults to being forwarded to the commit server from a replica. The replica now handles that command by default. An Extension wishing to forward the command may return a second boolean from the 'RunCommand' callback, e.g. 'return true, true'. #2098369 (Jobs #105663, #105664) ** The tagged output of a describe of a submitted changelist will contain a "streamDeleted" tag if the changelist contains a stream spec and the stream has been deleted. Similarly, if a stream was deleted after change N, then 'p4 stream -o //streampath@N' will display this error message "Stream //streampath was deleted after change N" Bugs fixed in 2020.1 Patch 6 (2020.1/2096685) #2088638 (Job #105617) ** Tagging very large numbers of files from an edge server against a global label could fail with network errors. #2082262 (Job #105397) ** A save of a stream specification in which no changes are actually made to the specification no longer creates a changelist or consumes a changelist number. #2076299 (Job #104778) *** A potential deadlock on the proxy server's table has been fixed. #2072714 (Job #101504, #105052) ** File handles are no longer inherited by trigger processes. #2071035 (Job #105037) ** Report correct 'Stream does not exist' error when referencing a non-existing stream. #2070773 (Job #104764) ** The logging support in extensions now correctly handles the tables with numeric keys. #2070274 (Job #95097) ** 'p4 switch' now checks the stream hierarchy to determine if the streams are related rather than assuming streams in the same depot are related. To switch to any unrelated stream, you will now need to provide the new --allow-unrelated flag. Bugs fixed in 2020.1 Patch 5 (2020.1/2089982) #2081247 (Job #105481) ** 'p4 submit' now only takes an exclusive lock on db.storagesh when a shelf is involved in the submit. #2079990 (Job #102714) ** The P4Tunable::Get() function has been inlined to improve performance. #2079942 (Job #104559) ** 'p4 revert' now only acquires when necessary exclusive locks on db.resolvex, db.revsh and db.storagesh, and instead acquires shared locks on db.resolvex and db.revsh. #2079919 (Job #102715) ** Several MapChar functions have been inlined to improve the performance of the mapping code. #2079918 (Job #102713) ** Tunable variables are now cached during code loops to improve performance. #2079221 (Job #104559) ** 'p4 revert' no longer acquires an exclusive lock on db.storage. Bugs fixed in 2020.1 Patch 4 (2020.1/2072337) #2069560 (Job #105149) ** Slashes-in-client error on 'describe' when with edge-server client. #2069525 (Job #093890) ** Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error on 'p4 shelf -d' and 'p4 change -d' on shelves created by 'p4 switch'. #2068356 (Job #105118) ** Ensure shelved archives are present when replacing with -f or -r. #2064042 (Job #104937) ** Shelf promotions containing an integration can lead to storage inconsistencies. This has been fixed. #2063917 (Job #105093) ** When background submit results in failed archive transfers, those archives may be restored using 'pull -u -t'. However, if the archives were not restored to the commit server before commands attempt to fetch them, the pull command might lose the ability to recover them due to the entries being removed from the commit server's rdb.lbr. This behavior has been fixed. #2062635 (Job #104359) ** Protections errors during batched archive replication no longer causes ondemand fetches to wait indefinitely. #2060710 (Job #102935) ** Connections completing faster than the threshold defined by the new 'db.monitor.addthresh' configurable (specified in milliseconds) are not added to the db.monitor table at monitor levels 1 or 2. Changes to 'db.monitor.addthresh' will apply to all new commands; no server restart required. #2058012 (Job #093890) ** The changelist description of shelves created by 'p4 switch' has been improved. #2054715 (Job #104525) ** The performance of 'p4 depots' command was poor when it was run by a regular user (not a super-user) with a large number of graph repos and graph-permissions. This performance is now improved. #2047511 (Job #104093) ** 'p4 verify -S' now reports the correct changelist number for +S type files. #2043225 (Job #104537) ** 'p4 sync -f' now correctly records the syncTime for any files that are refreshed. #2042376 (Job #104530) ** Change to reduce lock held time on db.stream when generating a view with 'p4 stream -ov'. #2041405 (Job #104537) ** 'p4 sync' now correctly maintains the recorded syncTime for any files that would be replaced, but are skipped when the digests match. #2040678 (Job #102314) * Windows clients now correctly report when they are unable to replace files when using the long filename support. #2038956 (Job #102314) ** Clients now correctly report when they are unable to delete files. #2036197 (Jobs #102941, #103026, #103025) ** On Windows a mix of network and API errors may have been reported incorrectly if Server tracing was present. This has been fixed. Bugs fixed in 2020.1 Patch 3 (2020.1/2051818) #2051777 (Job #104945) * ** *** **** OpenSSL has been upgraded to 1.1.1i #2032943 (Job #104279) ** 'p4 describe' could cause shelved archives for ktext files to be modified. This has been fixed. #2023784 (Job #104049) ** Running 'p4 fix' when the jobspec had no Status field could cause a crash. This has been fixed. #2013287 (Job #103714) ** 'p4 ldapsync -i' no longer stops when an error is encountered. Instead it waits the provided interval and runs again. #2010244 (Job #102750) ** A crash would occur when submitting a change that included an illegal integration to a readonly depot. This has been fixed. #2006356 (Job #103570) ** The unexpanded digests and file sizes of shelved ktext files are now stored in the commit server's db.storagesh table when promoted from edge servers. #2007338 (Job #042042, #102435) ** Windows file I/O now uses the native Windows API rather then the Posix file I/O routines. This removes the limit on the number of concurrently open files for the librarian and error logging. Bugs fixed in 2020.1 Patch 2 (2020.1/2007551) #2002989 (Job #102212) ** Previously 'p4 submit -b' would fail if submit.allowbgtransfer was not configured, or when that command was run from a server that was not an edge server. Now submit will succeed and fall back to the default submit archive transfer behavior for those scenarios. #1998612 (Job #103411) ** 'p4 reshelve' could crash when file arguments were provided. This has been fixed. #1998368 (Job #102542) ** Error handling code had an error and has been corrected to no longer error on error. #1996539 (Job #103349) ** 'p4 tag' run against a non-autoreload global label from a 20.1 edge server with multiple arguments would silently fail to tag all the files reported. This has been fixed. #1991602 (Job #103253) ** When a workspace is in a stream with an import+ path, such as 'import a_path/...', and a parent stream has a path with the same view path, such as 'share a_path/...', then an attempt to open a file for edit or submit the file would result in a message "%depotFile% - warning: cannot submit from stream %stream% client". A file submit under such a scenario would fail. This was a bug which has been fixed. #1990949 (Job #102789) ** The Windows server appended the packfile name to the target directory using '\' rather than '/' for a linux client. This caused GConn to fail to clone from the Windows server. Bugs fixed in 2020.1 Patch 1 (2020.1/1991450) #1989752 (Job #102995) ** Upgrading the server from pre-19.1 would store the wrong checksum for unexpanded ktext files in db.storagesh. The upgrade process has been fixed. To correct the checksums on servers that have already been upgraded to 19.1 or greater, please run 'p4 storage -R -S'. #1989083 (Job #103202) * The 'Navigate to URL' message reported by 'p4 login' when using the Helix Authentication Service was emitted on stderr despite being an info message. This has been fixed. #1988116 (Job #103159) ** Shelving a deleted or moved revision with the ktext attribute would fail. This has been fixed. #1988112 (Job #103165) ** The GetArchiveFileInfo() method called within the Archive() extension callback now returns the archive revision as a string rather than an integer. #1986956 (Job #102795) * ** *** **** OSX Catalina is now fully supported. #1984418 (Job #102440) ** The 'p4 heartbeat' command would fail with an error when it was run by an operator user even though this command is supported for use by operator users. This has been fixed. #1979653 (Job #97585) ** 'p4 user -d' run against a very specific configured replica would fail to lock the correct database tables and could cause a deadlock. This has been fixed. #1977774 (Job #102850) ** The replacement of a lazy copied shelved revision would cause the removal of the archive on downstream edge servers. This has been fixed. #1975998 (Job #102797) * Windows clients no longer leave trailing NULL bytes at the end of '+k' filetype files transfered via sync/print when the RCS 'Author' keyword was used and the username submitting the file was changed post-submit. #1972509 (Job #102609) Network errors on Windows and Linux are now more accurately reported when additional tracing such as net=3 or ssl=3 are used. #1971423 (Job #101504) ** A rare error that could lead to database deadlock during journal rotation has been fixed. #1971422 (Job #102020) ** MFA logins via URLs are now delivered promptly through edge-servers. #1971134 (Job #102471) ** Fix for lock error "Locking failure: db.templatewx locked after db.resolvex!" when deleting a promoted shelf with a stream spec from an edge server client. #1970332 (Job #72507) ** If a file in a task stream is submitted with the reopen flag, and a resolve had been done prior on the file prior to the submit, then the submit would fail with the messages "Files newly opened or reverted during submission". This has been fixed. #1968897 (Job #102632) ** 'p4 server -c commit-server' no longer removes pre-existing startup.N configurations. #1968805 (Job #102541) ** 'p4 unshelve' no longer crashes if a network error is encountered during completion of the command. #1965109 (Job #102543) ** File transfers between pre 19.1 replicas with 19.1 and subsequent commit server releases can fail with a fileSize error. This has been fixed. #1964794 (Job #102470) * 'p4 reconcile'/'p4 status' might report about invalid filenames of the form '//depot/0' or '//depot/100', etc. This is fixed. #1962564 (Job #102168) ** If a stream specification integration was performed on an edge server, and the submit occurred on the edge server, then the database table db.integedss was not updated on either the edge or commit servers. This has been fixed. #1962562 (Job #102482) ** If a stream specification is open in a workspace on an edge server, and a user edits a different stream specification from the same workspace with a 'p4 stream' command, then the edge server database tables db.template and db.bodtextcx would be updated, but the corresponding commit server tables would not. This has been fixed. #1961372 (Job #102146) ** The amount of scanning rdb.lbr when using the --batch argument on a 'pull -u' command or background thread has been reduced. #1961252 (Job #102391) ** The --batch parameter on a 'pull -u' command or background thread is again honored when retrying transfers that failed due to a digest mismatch. #1961233 (Job #102177, #102416, #102442) ** 'p4 submit' from an edge server using background archive transfer could erroneously succeed when archive transfer from the client to the edge server has failed. This has been fixed. #1957137 (Job #102273) ** The 'p4 heartbeat' command would fail to detect when the target server could not support heartbeat commands. In that case the command would not exit gracefully with a useful error. Additionally, it would continue to try to connect and fail until the target server or command exited. This has been fixed by exiting immediately with an appropriate error. #1955306 (Job #101728) ** Performance might have been less than optimal for a sync from an edge or build server when file content for a number of revisions were not in the replica's archives. Performance can now be improved for such syncs from these servers (if the server has 'pull -u' threads running and its 'lbr.replication' configurable is set to a value of 'readonly') by setting the new 'rpl.deferred.sends' configurable to a value of '1'. Changes to 'rpl.deferred.sends' will affect all new sync commands on the edge or build server for which it was changed; no server restart is required. Bugs fixed in 2020.1 (2020.1/1953492) #1943492 (Job #97347) ** Preview mode of 'p4 failover -i' without the mandatory -s argument would generate a spurious "Empty identifier not allowed" error. This has been fixed. #1941632 (Job #101653) ** Single threaded server requests would start a pending storage upgrade request. This has been fixed. #1941274 (Job #100128) ** Failed failed-over triggers would log duplicate error messages to the structured error log and the unstructured log. This has been fixed. #1939044 (Job #101754) ** Fixed "Stream //path/name shelved" message to work correctly with tagged output. #1935056 (Job #44721) ** 'p4 tag -n' run against a non-existent label no longer creates the label. #1933485 (Job #101726) ** Performance has been improved for parallel syncs from an edge or build server, either of which with their 'lbr.replication' configurable set to a value of 'cache' and have one or more 'pull -u' threads running, and the archive file content for a number of revisions are not in the replica's archives. #1932565 (Job #101663) ** A client's have list entry is no longer corrupted when refreshing a revision using 'sync -f' from an edge or build server, either of which with their 'lbr.replication' configurable set to a value of 'cache', and the archive file content for the revision is not in the replica's archives. #1931477 (Job #101628) ** The digest for keyword revisions in shelves was not calculated. This has been fixed. #1930299 (Job #101687) ** Improve error handling for Extension AuthPreSSO, Archive and MFAPre hooks for when both the Extension archive and unpacked files are missing. #1930296 (Job #101704) ** The '%' character was not properly escaped when saving Extension instance configuration data. #1929520 (Job #97815, #101422, #101452, #101454) ** Non-admin users can now view the storage record table. Additionally, when a digest is not computed for a keyword revision, the 'storage_upgrade_errors' file will now contain both the lbrFile and the lbrRev values. The generation of digests during a storage upgrade can be suppressed using the 'lbr.storage.skipkeyed' configuration variable. The -v argument to 'p4 storage' now correctly reports unset digests. #1929471 (Job #101586) ** Extension instance configuration data is now refreshed between invocations within a single client connection. #1928337 (Job #101229) ** Previously, a stream spec could be opened by one user in a given workspace, and then submitted by a different user in the same workspace. This is contrary to the expected behavior for files, where only the user who opened a file for edit can submit, and could cause a number of problems when conflicts occur. The solution is to require that a stream spec submit is done by the user who opened the stream spec for edit. #1925762 (Job #101314) ** Better error handling of an Extension's GlobalConfigFields callback. #1923576 (Job #101541) ** Binary content in extension packages could be corrupted during transfer due to line ending converison. This has been fixed. #1919900 (Job #101127) ** Make the storage table building process visible to the monitor. #1919523 (Job #101062) ** When 'p4 have' for graph has no matching repos, it would complete as a failure. This fix changes the failure message "No matching repos" to the warning message "file(s) not on client". #1919007 (Job #97651) **** The checkauth feature in p4broker could hang when users aren't logged in and automatic login prompting is enabled. This has been fixed. #1918882 (Job #93836, #101365) ** Race conditions in serverlocks on Linux and Mac platforms have been fixed. #1918032 (Job #95457) ** Changing the value of the 'net.maxwait' configurable no longer affects existing connections such as a metadata pull thread. #1916336 (Job #100917) ** The 'p4 graph cat-file' command was missing the -o option. This change adds in the missing option. #1915409 (Job #90569) ** The DVCS engine will now emit a list of missing files before it emits a MsgDM::NoSplitMoves message. This message is emitted when pushing a moved file and the other file in the move pair is missing. #1914179 (Job #101297) ** Slow sync performance caused by RCS locking. This has been fixed. #1912366 (Job #101243) ** The first stage storage upgrade was generating an incorrect error message about a failed digest. This has been fixed. #1912256 (Job #101004) ** The first phase of the storage upgrade process now limits the number of storage records in a single transaction to 1000. #1911819 (Job #101126) ** Make the storage orphan scanner processes visible to the monitor. #1911572 (Job #100875) ** 'diff2 -dw' would report 'content' when the only differences are in white spaces. Now, the report says 'identical'. #1911565 (Job #96731) ** When attempting failover with master participation, the failover would fail with an unhelpful error if the master version was 2018.1 or earlier and could not support failover. Now it will fail with a specific and helpful error message. #1907250 (Job #100902) ** 'p4 fstat -OI' for graph depots would miss changeCommit if the graph depot index is missing. Now, the changeCommit appears whether or not the index exists. #1902937 (Job #100493) ** Two new boolean fields have been added for 'p4 extension --list --type=extensions' to indicate if the extension has a global configuration and at least one instance configuration. Both must be set to true for an extension to be active. #1902809 (Job #100945) ** 'p4 revert -C' now ignores the admin's client as expected. #1900754 (Job #96680) ** The server.log.file.* configuration values are now checked during failover to insure that the files will be writeable after successful failover. #1899322 (Job #100116) ** Client extension p4:connect connection erros were not reported in p4.errors. This has been fixed. #1898424 (Job #100873) ** 'p4 diff2 -Od' could sometimes generate a 'no differing files' warning mistakenly when there are actually some differing files. This has been fixed. #1897132 (Job #100097) ** P4EXTENSIONS containing . (dots) in the path would not get these client extensions loaded and executed. This has been fixed. #1896318 (Job #100568) ** A 'p4 storage -l pause //depot/...' request now waits until the orphan scanner has entered the paused state before returning. #1894033 (Job #100608) ** Avoid error on conflicting clients for commands that are read-only. For 'p4 opened -c ' or -u, the current client of the user is irrelevant and no error should be displayed if that client is tied to another server. The same should be the case for 'p4 client' when the client name is provided as an argument or for 'p4 client -i' which should validate the client name listed in the form rather than the client tied to the user initiating the command. #1893837 (Job #100555) ** The server will now ignore permanent .lck failures on attempts to open a RCS for reading while running 'p4 verify'. #1893174 (Job #98818) ** Incorrect values for the 'time held' field were displayed for the serverlock "storageup/storageup". This has been fixed. #1891955 (Job #90959) ** 'p4 sync -L' now allows files to be specified with revision specifiers of #0. #1891322 (Job #100615, #100616) ** Log a message if computing the digest for a keyed file fails during the storage upgrade process. Avoid holding the write lock on the storage table during digest calculation during the storage upgrade process. #1891210 (Job #98489) ** 'p4 ldapsync' now skips users in LDAP that have usernames that the server considers illegal. #1891097 (Job #94337, #42412) ** Non-keyed data is now correctly journaled in the '@dv@' records. #1889618 (Job #100613) ** Creating file locks (.lck) could take a long time to fail. The server now checks the error returned by the OS and fails quickly if it is a permanent error. #1884636 (Job #41905) *** Corrupted RCS archive files in the proxy cache would prevent new revisions of that file being cached. This has been fixed. #1883404 (Job #90569) ** The DVCS engine will now emit a list of missing files before it emits a MsgDM::NoSplitMoves message. This message is emitted when fetching a moved file and the other file in the move pair is missing. #1881257 (Job #98102) ** 'p4 login -s' run with either '-a', '-h' or a username would report ticket expiry dates to be far in the future. This has been fixed. #1875000 (Job #100028) * 'p4 clean' and 'p4 reconcile' now handle the '*' wildcard correctly on Windows. #1863490 (Job #96679) ** The 'p4 servers -J' command could return incorrect values for PersistedJournal, PersistedSequence, AppliedJournal and AppliedSequence if the journal's metadata was out of date. Now the statejcopy file is used to get the Persisted values, and the state file is used to get the Applied values so that these values are correct. -------------------------------------------------------------------------- Major new functionality in 2019.2 (2019.2/1885864) #1859368 (Job #99850) ** Minimal downtime upgrades. Support for outside-in upgrades has been reestablished. Please see the upgrade notice at the beginning of this file. #1856324 (Job #94869) ** Configurable history is now recorded. Configurables changes on a 2019.2 or later server with either 'p4 configure set/unset' or 'p4d -cset/-cunset' are now recorded. This history is made visible with 'p4 configure history', which behaves similarly to 'p4 configure show'. #1828890 (Job #95112, #90346, #67029) ** Structured logging improvements. Structured logs now have a versioned schema that allow new versions of existing events to be added. Updated versions of events are represented by having the server version included after a period in the event type field. The event types with new versions this release are: 2.49 - CommandEnd 6.49 - Audit 8.49 - NetworkPerformance 9.49 - DatabasePerformance The 'serverlog.version.N' configurable can be used to pin a structured log file to a specific server version's format. To retain the prior structured log events format, set the 'serverlog.version.N' configurable to 48. #1873195 (Job #99688, #98735, #97689, #23625) ** Orphaned depot files detection and archive cleanup. The '-l' and '-d' flags have been added to 'p4 storage'. These flags can be used to detect and clean up any orphaned depot files left over from a failed submit or shelve operation. See 'p4 help storage' for more detail. Minor new functionality in 2019.2 (2019.2/1885864) #1872848 (Job #98957, #96750) ** Add the ability to create custom fields in stream specs. When adding custom fields to specs use the 'NNN' placeholder value for the field code value to automatically assign the next available code value. #1862346 (Job #98937) ** A new command 'p4 streamspec' has been added. The new command allows you to add custom fields to stream specs. #1859414 (Job #99722) ** For the scenario where a stream spec change in a pending changelist is shelved, the change is reverted and then the client workspace is switched to a different stream: it is now possible for a file to be added to the pending changelist and shelved with the stream spec from the previous stream. #1856483 (Job #99721) ** A stream spec can now be deleted from a shelved change from the context of any stream. Also, the stream spec does not have to be open for edit to be deleted from a shelved change. #1853371 (Job #98048) ** 'p4 verify' now supports using -S and -v together to recalculate the digests of shelved files. #1847657 (Job #92631) ** A new field 'gconn-serverId' has been added in the repo spec. Data for this field comes from the Helix4Git instance which is mirroring that repo. #1843953 (Job #95377) ** A 'failed-over' trigger has been added. It is fired when a standby server becomes the new master and first starts up during a successful 'p4 failover' command. #1842551 (Job #98058) ** A new flag '-Z' has been added to the 'p4 verify' command. This is equivalent to a 'p4 storage -v' request, causing the verify command to perform a checksum compare using the db.storage table instead of the db.rev table. This avoids duplicate checks of lazy-copied files. #1840946 (Job #99415) ** We are now recording the serverSize field in the matching storage record with the file size of the depot file in the server. Additionally, if the type of submitted revision is compressed and p4 configurable 'submit.storagefields' is set, then the digest of depot file is computed and stored in the compCksum field in the storage record. #1833159 (Job #99047, #96805) ** The new 'p4 extension --run' option lets a user interact with a Server-side Extension directly. The Extension can send plain or tagged messages and progress updates to the client program. One use for this is to implement custom commands, e.g. 'p4 extension --run fancyBranchMaker args'. #1826797 (Job #94456) ** 'p4 obliterate supports' a new -p purge option. This removes the need of running a two step process of 'p4 archive' followed by 'p4 archive -p'. This marks the revision as purged and leaves the integration history intact while still removing the archive file. #1821614 (Job #98956) ** Added a new server spec field, 'updateCachedRepos' for use only by servers of type 'connector'. Prior to his change 'gconn --poll-repos' queried its Helix 'connector' server spec for a list of git repos contained in the 'externalAdress' field. With this release and upgrade, this list for repos has moved from 'externalAddress' to the new 'updateCachedRepos'. Note: Helix4Git should be upgraded before Helix Core. If not, gconn --poll-repos' will find an empty list of repos in 'externalAdress'. #1808665 (Job #96987) ** A new configurable, db.monitor.term.allow, when set to 1 allows users to terminate their own processes. If set to 2, users can also pause and resume their own processes. A minimum of 'read' permission is required for these users to be able to use 'p4 monitor terminate'. Bugs fixed in 2019.2 Patch 16 (2019.2/2224541) #2222913 (Job #96885) ** A concurrent parallel submit and revert in the same workspace could turn off search permission on the clientEntity/0,d serverlock directory. This has been fixed. #2205086 (Job #107762) ** Commands awaiting replication will no longer be inordinately delayed by a journal rotation on the upstream server. #2204645 (Job #107572) ** Running 'p4 sync' or 'p4 print' from a commit server could report librarian errors when the requested archive files had not yet been fetched from the originating edge server during background submit. This has been fixed by allowing those archives to be fetched on demand. #2198821 (Job #106310, #90948) ** The 'pull -u --batch' command could excessively retry its batch when any transfer error occurred, causing the pull thread to stall instead of moving on to request other archives. This was due to a regression that was introduced in 2019.2 by a fix to allow 'pull -u --batch' to resume after a failed connection. Both of these bugs have been fixed. Bugs fixed in 2019.2 Patch 15 (2019.2/2179822) #2176143 (Job #107796) * ** *** **** OpenSSL has been upgraded to 1.1.1k #2175263 (Job #107736) ** OpenLDAP has been upgraded 2.4.59 #2175088 (Job #107513) * ** SQLite (for extensions) has been upgraded 3.36.0 #2175039 (Job #105082) * ** cURL (for extensions) has been upgraded 7.75.0 #2175038 (Job #105082) * ** Lua (for extensions) has been upgraded 5.3.6 #2175037 (Job #105082) * ** Lua-cURLv3 (for extensions) has been upgraded 0.3.12 #2165146 (Job #107505) ** Cyrus-SASL has been patched to address CVE-2019-19906. #2156894 (Job #106143) ** The 'pull -u' threads on a standby server to a commit server could fail to transfer archives from a promoted shelved change when there is latency between the commit server and the edge server causing slow transfer of archives to the commit server. This has been addressed by allowing 'pull -u' threads on standby servers to retry transfers of missing archives. #2151255 (Job #106645) ** 'p4 storage -d -y' now releases all table locks while deleting or moving archives. #2150473 (Job #107115) ** Errors encountered while journalcopy'ing in a background thread that are reported to the standby or forwarding-standby's server log will no longer be missing parts of the error message. #2146938 (Job #106795) ** Fixed undo problem, a source file is integrated, then a source file revision is undone in the previous integration range, and a later integration attempt claims that all revisions were already integrated. Now the configurable dm.integ.undo, and the integration option 'p4 integ -Ru', will fix this problem by only creating integration credits for previous integrations that were not in an undo revision range. #2140289 (Job #106796) ** Updated p4 help resolve to distinguish between resolving with auto-merge ('p4 resolve -am') and resolving manually with an accept merge ('p4 resolve' and choose the 'am' option). Resolving with auto-merge will not guarantee that all integrations will be merges, only that the choice is automated and merge will be chosen when optimal. Bugs fixed in 2019.2 Patch 14 (2019.2/2136041) #2134805 (Job #104926) ** 'p4 unshelve' now correctly tracks temporary shelve copies created for pending resolves on edge servers in db.storagesh. #2132218 (Job #106579) ** The unlicensed limit on the repo count has been changed to 3. #2132012 (Job #106209) ** The license file now supports exposing extra capabilities to be used for centralised licensing of add-on products. #2129716 (Job #106628) ** Under specific conditions that cannot normally occur, a file open for integrate but without any resolve records could cause the server to crash during submit. This has been fixed. #2126983 (Job #106380) ** Missing archives were sometimes not reported by 'p4 verify -z'. This has been fixed. #2126982 (Job #105391) ** The performance of verifying archives using the storage tables has been improved. ('p4 verify -Z', p4 storage -v') #2119158 (Job #104527) ** Fix for wrong stream view generation with an embedded wildcard. If a stream is a grandchild of the mainline, and has a one parameter import path, and share paths which are contained in the import path, then the view generated for the first share path with an embedded wildcard would be incorrect. This problem only occurred on Linux and Windows platforms. #2118091 (Job #106130) * The client-side threading for parallel sync no longer shares charset converters, preventing race conditions during translation of unicode type files which could corrupt the files in the workspace. #2105269 (Job #104119) ** Fix to allow a file in a virtual stream to be opened and submitted if the file is in a share stream path with an embedded wildcard. Bugs fixed in 2019.2 Patch 13 (2019.2/2106894) #2105325 (Job #105997) * ** *** **** OpenSSL has been upgraded to 1.1.1k Bugs fixed in 2019.2 Patch 12 (2019.2/2098840) #2085299 (Job #104559) ** 'p4 revert' now only acquires when necessary exclusive locks on db.resolvex, db.revsh and db.storagesh, and instead acquires shared locks on db.resolvex and db.revsh. #2084570 (Job #104559) ** 'p4 revert' no longer acquires an exclusive lock on db.storage. #2081106 (Job #105397) ** A save of a stream specification in which no changes are actually made to the specification no longer creates a changelist or consumes a changelist number. #2080390 (Job #102714) ** The P4Tunable::Get() function has been inlined to improve performance. #2080101 (Job #102715) ** Several MapChar functions have been inlined to improve the performance of the mapping code. #2079976 (Job #102713) ** Tunable variables are now cached during code loops to improve performance. Bugs fixed in 2019.2 Patch 11 (2019.2/2077132) #2067567 (Job #105118) ** Ensure shelved archives are present when replacing with -f or -r. #2065803 (Job #105093) ** When background submit results in failed archive transfers, those archives may be restored using 'pull -u -t'. However, if the archives were not restored to the commit server before commands attempt to fetch them, the pull command might lose the ability to recover them due to the entries being removed from the commit server's rdb.lbr. This behavior has been fixed. #2059990 (Job #104937) ** Shelf promotions containing an intgration can lead to storage inconsistancies. This has been fixed. #2058013 (Job #93890) ** Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error on 'p4 shelf -d' and 'p4 change -d' on shelves created by 'p4 switch'. #2051504 (Job #103914) ** Shelving unresolved integ file will no longer lead to BAD digest error upon storage verification. #2048148 (Job #104093) ** 'p4 verify -S' now reports the correct changelist number for +S type files. #2041703 (Job #104530) ** Change to reduce lock held time on db.stream when generating a view with 'p4 stream -ov'. #2040680 (Job #102314) * Windows clients now correctly report when they are unable to replace files when using the long filename support. #2038958 (Job #102314) ** Clients now correctly report when they are unable to delete files. #2032945 (Job #104279) ** Fix to ensure that the 'describe' command is not manipulating the promoted ktext shelf archive files. Bugs fixed in 2019.2 Patch 10 (2019.2/2056291) #2051777 (Job #104945) * ** *** **** OpenSSL has been upgraded to 1.1.1i #2013288 (Job #103714) ** 'p4 ldapsync -i' no longer stops when an error is encountered. Instead it waits the provided interval and runs again. #2010045 (Job #102750) ** A crash bug would occur when submitting an integration from a local depot to a readonly depot. The integration was illegal, but would succeed with a sync/delete message, and a following submit would crash. This has been fixed. #2009478 (Jobs #042042, #102435) ** Windows file I/O now uses the native Windows API rather then the Posix file I/O routines. This removes the limit on the number of concurrent open files for the librarian and error logging. #2007605 (Job #103570) ** The Ktext unexpanded digest and the file size is stored in the db.storagesh table when a file is shelved or promoted from an Edge server. #2006144 (Job #102594) ** Fix the problem that after adding then deleting an optional field to/from a stream's spec, 'p4 stream' still presents the deleted field. #2003436 (Job #102212) ** Previously 'p4 submit -b' would fail if submit.allowbgtransfer was not configured, or when that command was run from a server that was not an edge server. Now submit will succeed and fail back to the default archive transfer behavior for those scenarios. Bugs fixed in 2019.2 Patch 9 (2019.2/1999325) #1998635 (Job #103411) ** 'p4 reshelve' could crash when file arguments were provided. This has been fixed. #1998062 (Job #102542) ** Error handling code had an error and has been corrected to no longer error on error. #1996931 (Job #102264) ** This enhancement supports automatic start of the Perforce p4diag tool when the Perforce Windows Service starts. Two things are required. Place p4diag.exe in the same directory as p4s.exe and p4 set -s Perforce P4DIAGLOG to the p4diag log file name. See the p4diag autostart KB article. #1992325 (Job #103253) ** When a workspace is in a stream with an import+ path, such as 'import a_path/...', and a parent stream has a path with the same view path, such as 'share a_path/...', then an attempt to open a file for edit or submit the file would result in a message "%depotFile% - warning: cannot submit from stream %stream% client". A file submit under such a scenario would fail. This was a bug which has been fixed. #1991660 (Job #102941) ** On Windows a mix of network and API errors may have been reported incorrectly if Server tracing was present. This has been fixed. #1989629 (Job #103165) ** The GetArchiveFileInfo() method called within the Archive() extension callback now returns the archive revision as a string rather than an integer. #1989170 (Job #103202) * The 'Navigate to URL' message reported by 'p4 login' when using the Helix Authentication Service was emitted on stderr despite being an info message. This has been fixed. #1984638 (Job #102995) ** Upgrading the server from pre-19.1 would store the wrong checksum for unexpanded ktext files in db.storagesh. The upgrade process has been fixed. To correct the checksums on servers that have already been upgraded to 19.1 or greater, please run `p4 storage -R -S`. Bugs fixed in 2019.2 Patch 8 (2019.2/1983127) #1977774 (Job #102850) ** The replacement of a lazy copied shelved revision would cause the removal of the archive on downstream edge servers. This has been fixed. #1975999 (Job #102797) * Windows clients no longer leave trailing NULL bytes at the end of '+k' filetype files transfered via sync/print when the RCS 'Author' keyword was used and the username submitting the file was changed post-submit. #1975256 (Job #102789) ** The Windows server appended the packfile name to the target directory using '\' rather than '/' for a linux client. This caused GConn to fail to clone from the Windows server. #1973248 (Job #102389) ** Ensure custom spec fields for type LLIST are formatted with tabs. #1972128 (Job #102471) ** Fix for lock error "Locking failure: db.templatewx locked after db.resolvex!" when deleting a promoted shelf with a stream spec from an edge server client. #1971421 (Job #101504) ** A rare error that could lead to database deadlock during journal rotation has been fixed. #1971420 (Job #102020) ** MFA logins via URLs are now delivered promptly through edge-servers. #1970670 (Job #102609) Network errors on Windows and Linux are now more accurately reported when additional tracing such as net=3 or ssl=3 are used. #1970333 (Job #72507) ** If a file in a task stream is submitted with the reopen flag, and a resolve had been done prior on the file prior to the submit, then the submit would fail with the messages "Files newly opened or reverted during submission". This has been fixed. #1969317 (Job #102482) ** If a stream specification is open in a workspace on an edge server, and a user edits a different stream specification from the same workspace with a 'p4 stream' command, then the edge server database tables db.template and db.bodtextcx would be updated, but the corresponding commit server tables would not. Fixed. #1968334 (Job #102541) ** 'p4 unshelve' no longer crashes if a network error is encountered during completion of the command. #1967144 (Job #102543) ** File transfers between pre 19.1 replicas with 19.1 and subsequent commit server releases can fail with a fileSize error. This has been fixed. #1964794 (Job #102470) * 'p4 reconcile'/'p4 status' might report about invalid filenames of the form '//depot/0' or '//depot/100', etc. This has been fixed. #1960706 (Job #102177, #102416, #102442) ** 'p4 submit' from an edge server using background archive transfer could erroneously succeed when archive transfer from the client to the edge server has failed. This has been fixed. #1959367 (Job #102146) ** The amount of scanning rdb.lbr when using the --batch argument on a 'pull -u' command or background thread has been reduced. #1959142 (Job #102350 ) ** 'Maxwords' was missing from the spec spec string. This prevented a spec edit of the stream spec to retain this field property in the Paths:element when saving the edited stream spec into db.bodtext. #1958997 (Job #102391) ** The --batch parameter on a 'pull -u' command or background thread is again honored when retrying transfers that failed due to a digest mismatch. Bugs fixed in 2019.2 Patch 7 (2019.2/1960190) #1955699 (Job #99520) ** 'p4 tag' run with multiple arguments updating an autoreload label no longer causes the label to be loaded into memory and rewriten to the unload depot for each argument. #1951949 (Job #101851) ** Background transfer for edge submit now ensures that the external address for the edge server performing the submit is valid before allowing the submit to proceed. #1938920 (Job #101728) ** Performance might have been less than optimal for a sync from an edge or build server when file content for a number of revisions were not in the replica's archives. Performance can now be improved for such syncs from these servers (if the server has 'pull -u' threads running and its 'lbr.replication' configurable is set to a value of 'readonly') by setting the new 'rpl.deferred.sends' configurable to a value of '1'. Changes to 'rpl.deferred.sends' will affect all new sync commands on the edge or build server for which it was changed; no server restart is required. #1935071 (Job #101653) ** Single threaded server requests would start a pending storage upgrade request. This has been fixed. #1932610 (Job #101726) ** Performance has been improved for parallel syncs from an edge or build server, either of which with their 'lbr.replication' configurable set to a value of 'cache' and have one or more 'pull -u' threads running, and the archive file content for a number of revisions are not in the replica's archives. #1930770 (Job #101577) ** Provide support to correct older customized specs after 2019.2 upgrades. The --repair option permits the correction of a customized spec causing errors. Errors may arise in a customized spec after upgrading from a pre 2019.2 to a 2019.2 or later server where a previous spec customization contains incompatible or missing data. #1930633 (Job #101663) ** A client's have list entry is no longer corrupted when refreshing a revision using 'sync -f' from an edge or build server, either of which with their 'lbr.replication' configurable set to a value of 'cache', and the archive file content for the revision is not in the replica's archives. #1930299 (Job #101687) ** Improve error handling for Extension AuthPreSSO, Archive and MFAPre hooks for when both the Extension archive and unpacked files are missing. #1930296 (Job #101704) ** The '%' character is now properly escaped when saving Extension instance configuration data. #1929494 (Job #97632) ** Previously a stream specification could not be unshelved to a workspace where the spec was opened for edit. Now unshelving a stream spec when it is opened in a workspace schedules a resolve. The unshelving action is completed once the stream spec has been resolved. #1920305 (Job #101314) ** Better error handling of an Extension's GlobalConfigFields callback. Bugs fixed in 2019.2 Patch 6 (2019.2/1942501) #1938267 (Job #97815, #101422, #101452, #101454) ** The storage permission requirements have been relaxed, normal users can now view the storage record table. The lbrFile and lbrRev fields are added to the error messages produced during a storage upgrade that are written to the 'storage_upgrade_errors' file when a digest is not computed for a keyword revision. The generation of digests during a storage upgrade can be surpressed using the 'lbr.storage.skipkeyed' configuration variable. The -v argument to 'p4 storage' now correctly reports unset digests. #1929471 (Job #101586) ** Extension instance configuration data is now refreshed between invocations within a single client connection. #1929166 (Job #101571) ** Extension configuration data no longer strips quotes. #1927240 (Job #101541) * Binary file part of extension package might be corrupted during transfer as they were processed as text file. This is fixed. #1926421 (Job #100917) ** The 'p4 graph cat-file' command was missing the -o option. This change adds in the missing option. Bugs fixed in 2019.2 Patch 5 (2019.2/1927395) #1926870 (Job #101494) ** Under specific conditons 'p4 submit -e' of a file of action branch could be submitted in such a way that the archive file is not where the server expects. This has been fixed. #1926248 (Job #100948) ** 'p4 submit' now fails with a "tampered with after resolve" error when trying to submit an unshelved file that is resolved with 'ay' and then modified inadvertently. #1924492 (Job #101216) * Ditto mappings could cause 'p4 reconcile' or 'p4 clean' to miss files. This has been fixed. #1924491 (Job #101579) ** Performance improvement of commands with large numbers of arguments. Notably 'p4 sync -L' is significantly faster with huge filelists in batch sizes of 10000+. #1923793 (Job #101127) ** Make the storage table building process visible to the monitor. Bugs fixed in 2019.2 Patch 4 (2019.2/1918134) #1915408 (Job #101215) ** A memory leak in SSL-enabled servers has been closed. Bugs fixed in 2019.2 Patch 3 (2019.2/1915892) #1914600 (Job #101297) ** Slow sync performance caused by RCS locking. This has been fixed. #1914512 (Job #101243) ** The first stage storage upgrade was generating an incorrect error message about a failed digest. This has been fixed. #1912874 (Job #101004) ** The first phase of the storage upgrade process now limits the number of storage records in a single transaction to 1000. #1911819 (Job #101126) ** The storage orphan scanner processes are now visible to the monitor. #1910009 (Job #100949, #101031) ** The job and stream specs can now be customised using explicit numbers instead of 'NNN' for backwards compatibility. Bugs fixed in 2019.2 Patch 2 (2019.2/1908095) #1907359 (Job #99171) ** Partitioned db.sendq tables are now removed if empty at the end of parallel syncs and on client delete. #1905528 (Job #100555) ** Ignore permanent .lck failures on attempts to open a RCS file for reading. #1905527 (Job #100956) ** Searches for storage records during an orphan scan have performance issues. This has been fixed. #1904027 (Job #100945) ** 'p4 revert -C clientname' should ignore admin's client since the client name is specified as a parameter. This has been fixed. #1903205 (Job #101017) ** Remote depot access could cause a hang if the new track logging was enabled. This has been fixed. #1903205 (Job #100868) ** The new structured logging events added this release are no longer logged if the log file is pinned to version 48 or lower. Those event types now have the ".49" version specifier. #1902941 (Job #100588) ** The server could return a bad result when attempting to join non-matching table keys. This has been fixed. #1898941 (Job #100027) ** The 'failed-over' trigger event can now be used by Extensions. #1898491 (Job #100554) ** The serverId is now correctly recorded in the configure history when changes are made with either 'p4d -cset' or 'p4d -cunset'. #1898491 (Job #93870) ** 'p4d -cset', 'p4d -cunset' and 'p4d -cshow' no longer take write locks on all tables; instead only the tables required are locked. 'p4d -cshow' now only takes read locks. #1898491 (Job #89608) ** 'p4d -cset' and 'p4d -cunset' now resolves the journal file to write too in the same way that the server would if started with the same flags and environment. When using 'p4d -cset' to set P4JOURNAL, if the new value would change the journal file being used, the new value is used instead. Bugs fixed in 2019.2 Patch 1 (2019.2/1897966) #1896353 (Job #100568) ** A 'p4 storage -l pause //depot/...' request now waits until the orphan scanner has entered the paused state before returning. #1895480 (Job #100608) ** Avoid error on conflicting clients for commands that are read-only. For 'p4 opened -c ' or -u, the current client of the user is irrelevant and no error should be displayed if that client is tied to another server. The same should be the case for 'p4 client' when the client name is provided as an argument or for 'p4 client -i' which should validate the client name listed in the form rather than the client tied to the user initiating the command. #1891322 (Job #100615, #100616) ** The server will now log a message if computing the digest for a keyed file fails during the storage upgrade process. Additionally, the server now avoids holding the write lock on the storage table during digest calculation during the storage upgrade process. #1889618 (Job #100613) ** Creating file locks (.lck) could take a long time to fail. Check the error returned by the OS and fail quickly if it is a permanent error. #1888789 (Job #100682) ** The orphan scanner did not correctly follow relative symlinks on the Windows platform. This has been fixed. #1887331 (Job #83623) * ** The default value of the 'filesys.lockdelay' has been decreased from 300 to 90 to ensure abandoned .lck files are correctly deleted. #1887330 (Job #100634) ** 'p4 storage -l start //depot/...' can fail if an orphan scanner with a name that is a substring of 'depot' exists. This has been fixed. #1875057 (Job #100028) ** 'p4 clean' and 'p4 reconcile' now handle the '*' wildcard correctly on Windows. Bugs fixed in 2019.2 (2019.2/1885864) #1882284 (Job #100524) ** Changing the file type from a tempobj type (+S) to a non tempobj type incorrectly removes all previous revisions. This has been fixed. #1877678 (Job #100400) ** A call to FileSys::Stat() issued on a symlink would return inconsistent results between operating systems. This has been fixed. #1869587 (Job #99913) ** A journal rotation beyond the LEOF is no longer sent to a replica that should be constrained by the LEOF. #1867765 (Job #99911) ** A metadata 'pull' or 'journalcopy' request for a journal fragment from the current journal no longer fails if the current journal is rotated just prior to determining the size of the current journal. #1866020 (Job #100158) ** UTF8 type files sync'ed from cache mode replica with a pre-2016.2 client could report a depot file error. This has been fixed. #1865912 (Job #100130) ** A crash when replicating a file into a directory with no write permissions is now prevented. #1861550 (Job #98869) ** The 'pull -L' thread no longer applies transactions beyond the LEOF to the metadata of a 'standby' or 'forwarding-standby' server, nor prematurely advances to the next journal if the LEOF is in a prior journal. #1858397 (Job #100012) ** If a stream spec is in a change but not shelved, and file is shelved but not opened, then 'p4 shelve -d -c N' would incorrectly report "Shelved change N partially deleted, still contains stream ...". The stream spec was never in the shelf, the message was not correct. Fixed to report "Shelved change N deleted." #1858257 (Job #99978) ** The upgrade storage walker would incorrectly take the walker lock in exclusive mode, blocking 'safe' command during the 2nd phase of the upgrade. This has been fixed. #1855841 (Job #99869) If a shelved change had an open stream spec change for one stream and a file change from that stream, and then the stream spec and file were reverted, and the client was set to a different stream, 'p4 describe -S clno' would give an error "RpcTransport: partner is not a Perforce client/server". This has been fixed. #1854429 (Job #99609) ** If 'p4 submit -b' was run from an edge server on a change with missing archives, a pull thread on the commit server could crash and cause more than just the missing archive to fail to transfer. This has been fixed. #1854349 (Job #99762) ** 'p4 graph tag' now allows partial SHA1 arguments. #1852875 (Job #99206) ** The environment P4EXTENSIONS ending with trailing slash caused should be silently disregarded but caused a runtime error. The runtime issue has been fixed, the environment still requires a pattern to match in extension filenames. #1850983 (Job #99608) ** Improve argument validation on 'p4 extension' to prevent certain combinations from entering a bad state. #1850862 (Job #99597) ** A metadata 'pull' or 'journalcopy' request for a journal fragment from the current journal no longer fails if the current journal is rotated just prior to opening the current journal. #1850807 (Job #99749) ** Trailing slashes at end of directory name when installing an extension was failing. This is fixed. #1848299 (Job #31585) ** 'p4 fstat' could scan db.rev excessively when the -e flag was combined with file spec using a revision specifier. This has been fixed. #1847529 (Job #96725) ** Attempts to restart the former master server after successful failover will now fail if its serverid has not been modified via 'p4d -xD' to a different serverid than the new master. #1842553 (Job #28576) ** A 'p4 obliterate' command called without the '-y' confirm flag now only takes a READ lock. #1842404 (Job #99542) ** 'journalcopy -i 0' no longer incorrectly detects an incorrectly terminated journal when rotated immediately after an unrelated journal growth. #1840225 (Job #98278) ** If an edge server is restarted and must replay the journal that contains a record of an install of an extension and subsequent delete of that same extension, the edge journal replay would be blocked at that position attempting to download an extension archive that is no longer needed. This has been fixed. #1839667 (Job #75382) ** The maximum size of shared memory for monitor table use was too small (2048 8K pages). Now it's 32768 pages for all platforms except Windows 32bit where memory address space is severely limited. #1839424 (Job #98597) ** Messages enumerating the mandatory standby servers that are not alive are now also reported in the server log of the replica servers to which replication is stalled. #1836925 (Job #97741) ** P4 extension ClientApi.new() can now process a port supplied via p4 -p . #1836209 ** Adjustments to allocation routines lead to less memory usage in the Windows server. #1830413 (Job #96675) ** Extension package command no longer accepts "." for current working directory. The directory name must be supplied either as an absolute or relative path. #1829901 (Job #99300) ** Journal header notes included with database table unloads created by 'p4 journaldbchecksums -u' now contain the correct case/unicode flags and the server root of the server they were unloaded from. #1826907 (Job #99208) ** 'rdb.lbr' is now locked along with the db.* files during server shutdown. This prevents incomplete btree updates of 'rdb.lbr' by other threads as the server is shut down. #1826716 (Job #94998) ** Protections, permissions and groups for a user are now cached and reused by additional commands run on the same connection. #1823272 (Job #98566, #99136) ** The server no longer allows force deletion of a submitted change that resides in an unloaded task stream, and when a task stream change isn't unloaded, it now reports the correct number of files in the change preventing the delete. #1821164 (Job #90948) ** Archive pull threads initiated by 'p4 pull -u --batch' didn't resume active archive transfers after connectivity issues with the commit server. This has been fixed. #1814097 (Job #98909) ** 'p4 change -df' of submitted changes containing stream edits now displays the correct messages about the stream and files in the change that prevent the delete. #1814096 (Job #98925, #98910) ** Submitted changes containing stream only edits now have the correct change root field set in db.change. #1812373 (Job #97309) * A 'p4 reconcile' that would add a huge number of files could cause an Rpc buffer too big error. This has been fixed. #1812099 (Job #98861) ** 'p4 renameuser' would leave orphaned locks when the user being renamed has opened exclusive checkout files (+l). This has been fixed. #1812005 (Job #97309) ** The service types ClusterServer and Zookeeper stored in the server spec are no longer supported; assigning these service types in a server spec will raise a warning. #1808584 (Job #98852) ** The server now consistently enforces a 1024 argument limit to the arguments supplied to trigger programs. #1808412 (Job #98651) ** The server can enter an infinite loop trying to join the rev and have table during a sync request using the #have revision specifier and a changed client view. This has been fixed. #1804485 (Job #90995) ** Changelist checksums for changes containing task stream files could erroneously report as 'differ' in the integrity.csv structured log on replica servers. This has been fixed. #1803518 (Job #95206) ** 'p4 unshelve' is now allowed for 'partitioned' type clients. ------------------------------------------------------------------------- Major new functionality in 2019.1 (2019.1/1796703) #1777138 (Job #96749) ** Private editing of streams Private editing of streams allows a user to modify a stream in isolation from other users of that stream, which provides an opportunity to test the modifications. In contrast, if edits to a stream spec are public, they take effect as soon as the user saves the edited stream spec. Prior to this release, a user could edit a stream spec privately by using 'p4 stream edit'. This new feature is an improvement over 'p4 stream edit' in terms of visibility and tracking. A single atomic changelist can contain all the work on the stream spec and any associated code changes. The feature includes the -So, -Si, or -Sx options of 'p4 edit', 'p4 submit', 'p4 revert', and 'p4 resolve'. These options give you control of when your changes will affect other users. This feature also makes it easy to shelve the edited spec so that another user can test the changes in an isolated environment. For more information, see 'p4 help streamcmds'. #1770847 (Job #98025) ** Background archive transfer for edge server submits The 'p4 submit -b' option allows submit from an edge server to transfer archive files in the background after the submit has committed its metadata. The user submitting the change will see the submit complete as soon as the metadata commit is completed, and will not have to wait for the archives to transfer. The archives will be pulled from the edge to the commit server using internally launched pull threads on the commit server. To enable 'p4 submit -b', the new 'submit.allowbgtransfer' configurable must be set on all participating servers in the installation. The 'p4 submit -b' behavior can be made implicit for any 'p4 submit' run on an edge server by setting the new 'submit.autobgtransfer' configurable to 1. The new 'p4 pull -u -t ' command may be used for recovery of failed archive transfers. See 'p4 help submit' and "Background archive transfer for edge server submits" in the P4 Command Reference. #1776989 (Job #48387) ** The Helix Core Server Extensions are a fully-supported alternative to triggers. To learn about the advantages of using extensions, see 'p4 help extension' and the "Triggers and Extensions" chapter of Helix Core Server Administrator Guide: Fundamentals. Note: Extensions are not available with the Helix Versioning Engine on Windows platforms. #1747154 (Job #96951) ** The graph data model now supports Git LFS locks. These locks are exclusive and are honored by all 'p4' commands that would interact with Git LFS files. Unlike the '+l' filetype locking, these locks are taken, released and listed by 'p4 graph lfs-lock', 'p4 graph lfs-unlock' and 'p4 graph lfs-locks' respectively. #1743677 * ** *** **** Autotune has been enabled by default. This functionality enables the TCP stack to manage the size of the network send and receive buffers, allowing more efficient use of the network, especially over slow high latency connections. This behaviour can be disabled in clients, proxies, brokers and the server by setting the 'net.autotune' configurable to 0; the default is now 1 (enabled). Clients can set this via "p4 set" or by adding the configurable to P4CONFIG files and servers can set this via 'p4 configure'. On Windows based platforms, send buffer sizes are not autotuned but are still manually configurable with the 'net.tcpsize' configurable. #1743672 (Job #95158) ** The new 'db.storage' table replaces 'db.archmap' to provide a link count for archive files on the server. This tracking reduces the complexity of identifying lazy-copies, allowing +Sn type files to now be lazy copied and providing massive performance gains for 'p4 obliterate' on servers with a lot of integration history. Please note that the upgrade from 'db.archmap' to 'db.storage' may be non-trivial, although it will mostly be performed in the background after the server has restarted, and that the new table will also be potentially sizeable. This change impacts our recommendations for distributed server upgrades. Please refer to the upgrade notes section, which has been updated for this release. Technology Preview features in 2019.1 (2019.1/1796703) #1750665 (Job #21301) * The Helix Core Client Extension mechanism allows the client to run scripts written in the Lua programming language. See 'p4 help clientextensionintro'. Minor new functionality in 2019.1 (2019.1/1796703) #1775358 (Job #97011) ** Improved tracking of stream spec edits because the changelist number associated with a stream update is included in the spec depot records. #1774452 ** The definition of the P4LANGUAGE variable has been updated to say that it should be set to the language tag and optional region for the user. E.g. if $LANG is 'en-US.UTF-8', set P4LANGUAGE=en-US. Note that servers with existing message translations will need their message database to be re-seeded with an updated message file. #1771834 (Job #92000) ** 'p4 archive' has a new '-z' option, which can reduce disk space usage. See 'p4 archive' in the P4 Command Reference. #1764315 (Job #96321) ** Added '-s change' and '--into-only' flags to 'p4 integrated' command to refine output. #1763210 (Job #96748) ** 'p4 streamlog' displays history of changes to streams. #1758544 (Job #96970) ** Edge servers may now be chained together. See "Edge-to-edge chaining" in Helix Core Server Administrator Guide: Multi-Site Deployment. #1756090 (Job #96667) ** Added support for utilizing multiple processor groups on Windows. Enabled by setting the 'sys.threading.groups' configurable to 1. See this configurable in the P4 Command Reference. #1753991 (Job #93328) ** For all server types, the DistributedConfig field of that server spec shows a line for each configurable that is set to a non-default value. In this field, you can edit the value, add a new line to set a different configurable to a non-default value, or delete a line to reset that configurable to its default value. #1747051 (Job #96666) ** 'p4 switch' has a new '--no-sync' flag to allow switching streams but without immediately syncing the target stream. #1740349 (Job #61064) ** Connections from super users and operators will no longer be refused when the connection limit is exceeded. The limit is defined by the 'server.maxcommands' configurable. The new configurable 'server.maxcommands.allow' may be set to 0 to disable this. See "Limiting simultaneous connections" in Helix Core Server Administrator Guide: Fundamentals. #1735885 (Job #373) * The verbose message output from 'p4 -s' now displays the actual error level: warning, error or fatal. Both error and fatal levels still cause 'p4' to return 1. For the case where existing scripts depend on the previous behavior, the API level can be set with '-Zapi=85' to cause all non-info output to be tagged with error. #1735085 (Job #96336) ** Setting the new 'push.unlocklocked' configurable to 1 automatically unlocks files that were locked as part of a push, on push failure. #1733878 (Job #66258) * ** *** **** Improvements to compression code yield 13-21% faster performance for binary files (sync and verify) and checkpoints (creation and replay). #1726148 (Job #51996) * ** 'p4 reconcile' has a new '-t' flag that allows filetype changes to be detected. #1723334 (Job #76162) ** 'p4 -ztag info' now reports an 'unloadSupport' tag with a value of either 'enabled' or 'disabled', depending on the existence of an unload type depot. Bugs fixed in 2019.1 Patch 16 (2019.1/2135798) #2128368 (Job #106380) ** Missing archives were sometimes not reported by 'p4 verify -z'. This has been fixed. #2128366 (Job #106628) ** Under specific conditions that cannot normally occur, a file open for integrate but without any resolve records could cause the server to crash during submit. This has been fixed. #2126651 (Job #104926) ** 'p4 unshelve' now correctly tracks temporary shelve copies created for pending resolves on edge servers in db.storagesh. #2124831 (Job #105391) ** The performance of verifying archives using the storage tables has been improved. ('p4 verify -Z', p4 storage -v') #2119621 (Job #106130) * The client-side threading for parallel sync no longer shares charset converters, preventing race conditions during translation of unicode type files which could corrupt the files in the workspace. #2118436 (Job #104527) ** Fix for wrong stream view generation with an embedded wildcard. If a stream is a grandchild of the mainline, and has a one parameter import path, and share paths which are contained in the import path, then the view generated for the first share path with an embedded wildcard would be incorrect. This problem only occurred on Linux and Windows platforms. #2107876 (Job #104119) ** Fix to allow a file in a virtual stream to be opened and submitted if the file is in a share stream path with an embedded wildcard. Bugs fixed in 2019.1 Patch 15 (2019.1/2106072) #2105325 (Job #105997) * ** *** **** OpenSSL has been upgraded to 1.1.1k Bugs fixed in 2019.1 Patch 14 (2019.1/2093245) #2085707 (Job #104559) ** 'p4 revert' now only acquires when necessary exclusive locks on db.resolvex, db.revsh and db.storagesh, and instead acquires shared locks on db.resolvex and db.revsh. #2084569 (Job #104559) ** 'p4 revert' no longer acquires an exclusive lock on db.storage. #2080604 (Job #105397) ** A save of a stream specification in which no changes are actually made to the specification no longer creates a changelist or consumes a changelist number. #2075996 (Job #105149) ** 'p4 describe change' from an edge server was reporting a 'Slashes-in-client' error for shelves created by 'p4 switch'. This has been fixed. #2075778 (Job #93890) ** Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error on 'p4 shelf -d' and 'p4 change -d' on shelves created by 'p4 switch'. #2074058 (Job #95097) ** 'p4 switch' now checks the stream hierarchy to determine if the streams are related rather than assuming streams in the same depot are related. To switch to an unrelated stream in the same same depot, you will now need to provide the new --allow-unrelated flag. Bugs fixed in 2019.1 Patch 13 (2019.1/2075729) #2066487 (Job #105093) ** When background submit results in failed archive transfers, those archives may be restored using 'pull -u -t'. However, if the archives were not restored to the commit server before commands attempt to fetch them, the pull command might lose the ability to recover them due to the entries being removed from the commit server's rdb.lbr. This behavior has been fixed. #2064992 (Job #105118) ** Ensure shelved archives are present when replacing with -f or -r. #2059990 (Job #104937) ** Shelf promotions containing an integration can lead to storage inconsistencies. This has been fixed. #2058011 (Job #93890) ** Suppress the "Slashes (/) not allowed in 'ws0//sroot/main'." error on 'p4 shelf -d' and 'p4 change -d' on shelves created by 'p4 switch'. #2051487 (Job #103914) ** Shelving unresolved integ file will no longer lead to BAD digest error upon storage verification. #2048147 (Job #104093) ** 'p4 verify -S' now reports the correct changelist number for +S type files. #2040677 (Job #102314) * Windows clients now correctly report when they are unable to replace files when using the long filename support. #2038957 (Job #102314) ** Clients now correctly report when they are unable to delete files. #2032946 (Job #104279) ** Fix to ensure that the 'describe' command is not manipulating the promoted ktext shelf archive files. Bugs fixed in 2019.1 Patch 12 (2019.1/2056318) #2051777 (Job #104945) * ** *** **** OpenSSL has been upgraded to 1.1.1i #2011450 (Jobs #042042, #102435) ** Windows file I/O now uses the native Windows API rather then the Posix file I/O routines. This removes the limit on the number of concurrent open files for the librarian and error logging. #2013289 (Job #103714) ** 'p4 ldapsync -i' no longer stops when an error is encountered. Instead it waits the provided interval and runs again. #2009304 (Job #102750) ** A crash bug would occur when submitting an integration from a local depot to a readonly depot. The integration was illegal, but would succeed with a sync/delete message, and a following submit would crash. This has been fixed. #2007606 (Job #103570) ** The Ktext unexpanded digest and the file size is stored in the db.storagesh table when a file is shelved or promoted from an Edge server. #2008128 (Job #102264) ** This enhancement supports automatic start of the Perforce p4diag tool when the Perforce Windows Service starts. Two things are required. Place p4diag.exe in the same directory as p4s.exe and p4 set -s Perforce P4DIAGLOG to the p4diag log file name. See the p4diag autostart KB article. #2003990 (Job #102212) ** Previously 'p4 submit -b' would fail if submit.allowbgtransfer was not configured, or when that command was run from a server that was not an edge server. Now submit will succeed and fall back to the default submit archive transfer behavior for those scenarios. #1998628 (Job #103411) ** 'p4 reshelve' could crash when file arguments were provided. This has been fixed. #1989630 (Job #103165) ** The GetArchiveFileInfo() method called within the Archive() extension callback now returns the archive revision as a string rather than an integer. #1989171 (Job #103202) * The 'Navigate to URL' message reported by 'p4 login' when using the Helix Authentication Service was emitted on stderr despite being an info message. This has been fixed. #1984646 (Job #102995) ** Upgrading the server from pre-19.1 would store the wrong checksum for unexpanded ktext files in db.storagesh. The upgrade process has been fixed. To correct the checksums on servers that have already been upgraded to 19.1 or greater, please run `p4 storage -R -S`. Bugs fixed in 2019.1 Patch 11 (2019.1/1984371) #1977774 (Job #102850) ** The replacement of a lazy copied shelved revision would cause the removal of the archive on downstream edge servers. This has been fixed. #1976546 (Job #102609) Network errors on Windows and Linux are now more accurately reported when additional tracing such as net=3 or ssl=3 are used. #1975997 (Job #102797) * Windows clients no longer leave trailing NULL bytes at the end of '+k' filetype files transfered via sync/print when the RCS 'Author' keyword was used and the username submitting the file was changed post-submit. #1972510 (Job #102471) ** Fix for lock error "Locking failure: db.templatewx locked after db.resolvex!" when deleting a promoted shelf with a stream spec from an edge server client. #1971418 (Job #101504) ** A rare error that could lead to database deadlock during journal rotation has been fixed. #1971417 (Job #102020) ** MFA logins via URLs are now delivered promptly through edge-servers. #1969457 (Job #72507) If a file in a task stream is submitted with the reopen flag, and a resolve had been done prior on the file prior to the submit, then the submit would fail with the messages "Files newly opened or reverted during submission". This has been fixed. #1967866 (Job #102541) ** 'p4 unshelve' no longer crashes if a network error is encountered during completion of the command. #1967145 (Job #102543) ** File transfers between pre 19.1 replicas with 19.1 and subsequent commit server releases can fail with a fileSize error. This has been fixed. #1960114 (Job #102442, #102416, #102177) ** 'p4 submit' from an edge server using background archive transfer could erroneously succeed when archive transfer from the client to the edge server has failed. This has been fixed. Bugs fixed in 2019.1 Patch 10 (2019.1/1962178) #1955700 (Job #99520) ** 'p4 tag' run with multiple arguments updating an autoreload label no longer causes the label to be loaded into memory and rewriten to the unload depot for each argument. #1951411 (Job #101851) ** Background transfer for edge submit now ensures that the external address for the edge server performing the submit is valid before allowing the submit to proceed. #1938266 (Job #97815, #101422, #101452, #101454) ** The storage permission requirements have been relaxed, normal users can now view the storage record table. The lbrFile and lbrRev fields are added to the error messages produced during a storage upgrade that are written to the 'storage_upgrade_errors' file when a digest is not computed for a keyword revision. The generation of digests during a storage upgrade can be surpressed using the 'lbr.storage.skipkeyed' configuration variable. The -v argument to 'p4 storage' now correctly reports unset digests. #1946483 (Job #101314) ** Better error handling of an Extension's GlobalConfigFields callback. #1937478 (Job #101639) ** 'p4 fstat -Ol' for graph depot could crash the server when run on mid-branch and a file there is deleted in the branch tip. #1931470 (Job #101653) ** Single threaded server requests would start a pending storage upgrade request. This has been fixed. #1931197 (Job #100917) ** The 'p4 graph cat-file' command was missing the -o option. This change adds in the missing option. #1930299 (Job #101687) ** Improve error handling for Extension AuthPreSSO, Archive and MFAPre hooks for when both the Extension archive and unpacked files are missing. #1930296 (Job #101704) ** The '%' character was not properly escaped when saving Extension instance configuration data. #1929471 (Job #101586) ** Extension instance configuration data is now refreshed between invocations within a single client connection. #1929166 (Job #101571) ** Extension configuration data no longer strips quotes. Bugs fixed in 2019.1 Patch 9 (2019.1/1927394) #1926603 (Job #101216) * Ditto mappings could cause 'p4 reconcile' or 'p4 clean' to miss files. This has been fixed. #1924302 (Job #101494) ** Under specific conditons 'p4 submit -e' of a file of action branch could be submitted in such a way that the archive file is not where the server expects. This has been fixed. #1919900 (Job #101127) ** Make the storage table building process visible to the monitor. Bugs fixed in 2019.1 Patch 8 (2019.1/1918131) #1915408 (Job #101215) ** A memory leak in SSL-enabled servers has been closed. Bugs fixed in 2019.1 Patch 7 (2019.1/1915891) #1914179 (Job #101297) ** In some cases, RCS archive locking was causing slow sync performance. This has been fixed. #1912366 (Job #101243) ** The first stage storage upgrade was generating an incorrect error message about a failed digest. This has been fixed. #1912256 (Job #101004) ** The first phase of the storage upgrade process now limits the number of storage records in a single transaction to 1000. Bugs fixed in 2019.1 Patch 6 (2019.1/1910149) #1908964 (Job #100555) ** Ignore permanent .lck failures on attempts to open a RCS file for reading. #1908963 (Job #93870) ** 'p4d -cset', 'p4d -cunset' and 'p4d -cshow' no longer take write locks on all tables; instead only the tables required are locked. 'p4d -cshow' now only takes read locks. #1908963 (Job #89608) ** 'p4d -cset' and 'p4d -cunset' now resolves the journal file to write too in the same way that the server would if started with the same flags and environment. When using 'p4d -cset' to set P4JOURNAL, if the new value would change the journal file being used, the new value is used instead. #1906389 (Job #100948) ** 'p4 submit' now fails with a "tampered with after resolve" error when trying to submit an unshelved file that is resolved with 'ay' and then modified inadvertently. #1904568 (Job #99171) ** Partitioned db.sendq tables are now removed if empty at the end of parallel syncs and on client delete. #1904026 (Job #100945) ** 'p4 revert -C clientname' should ignore admin's client since the client name is specified as a parameter. This has been fixed. #1902943 (Job #100588) ** The server could return a bad result when attempting to join non-matching table keys. This has been fixed. #1902273 (Job #100116) ** Client extension p4:connect connection errors were not reported in p4.errors. This has been fixed. #1902173 (Job #100158) ** UTF8 type files sync'ed from cache mode replica with a pre-2016.2 client could report a depot file error. This has been fixed. Bugs fixed in 2019.1 Patch 5 (2019.1/1898043) #1895699 (Job #100608) ** Avoid error on conflicting clients for commands that are read-only. For 'p4 opened -c ' or -u, the current client of the user is irrelevant and no error should be displayed if that client is tied to another server. The same should be the case for 'p4 client' when the client name is provided as an argument or for 'p4 client -i' which should validate the client name listed in the form rather than the client tied to the user initiating the command. #1891322 (Job #100615, #100616) ** Log a message if computing the digest for a keyed file fails during the storage upgrade process. Avoid holding the write lock on the storage table during digest calculation during the storage upgrade process. #1889618 (Job #100613) ** Creating file locks (.lck) could take a long time to fail. Check the error returned by the OS and fail quickly if it is a permanent error. #1882543 (Job #83623) * ** The default value of the 'filesys.lockdelay' has been decreased from 300 to 90 to ensure abandoned .lck files are correctly deleted. #1882284 (Job #100524) ** Changing the file type from a tempobj type (+S) to a non tempobj type incorrectly removes all previous revisions. This has been fixed. Bugs fixed in 2019.1 Patch 4 (2019.1/1876401) #1875389 (Job #100119, #100351 ) ** 'p4 reconcile -t' could remove file type modifiers that should be preserved. This has been fixed. #1865912 (Job #100130) ** Prevent a crash when replicating a file into a directory with no write permissions. #1865694 (Job #99021) ** Fix for stream import+ case "import+ path...". Bugs fixed in 2019.1 Patch 3 (2019.1/1865205) #1862232 (Job #100081) ** Enabled 'p4 submit -Af' for an edge server, for backwards compatibility. Please note that '-Af' has the same functionality as the '-Sx' parameter, and the use of '-Af' is discouraged in favor of '-Sx'. #1862231 (Job #100065) ** Now 'p4 shelve -d' without a corresponding '-c clno' changelist number returns a usage error message. #1860142 (Job #99990) ** Reenabled 'p4 submit' parameter '-Af', for backwards compatibility. Please note that '-Af' has the same functionality as the '-Sx' parameter, and the use of '-Af' is discouraged in favor of '-Sx'. #1858257 (Job #99978) ** The upgrade storage walker is incorrectly taking the walker lock in exclusive mode, blocking 'safe' commands during the 2nd phase of the upgrade. This has been fixed. #1854522 (Job #99733) ** If a changelist had a stream spec, and the changelist was shelved and the stream spec was not open in the current workspace, any attempt to change the change spec would result in a error message. Now the error will only occur if the stream field in the change spec has been changed. #1848589 (Job #99557) ** 'p4 describe -S clno' would display a stream spec which was opened in the changelist but not shelved. Now 'p4 describe -S clno' shows a stream spec only if it has been shelved with the changelist; 'p4 describe clno' continues to show a stream spec if it is opened for edit in the changelist or was submitted with the changelist. #1808412 (Job #98651) ** The server can enter an infinite loop trying to join the rev and have table during a sync request using the #have revision specifier and a changed client view. This has been fixed. Bugs fixed in 2019.1 Patch 2 (2019.1/1845410) #1844397 (Job #75382) ** The maximum size of shared memory for monitor table use was too small (2048 8K pages). Now it's 32768 pages for all platforms except Windows 32bit where memory address space is severely limited. #1843450 (Job #99587) ** If a stream spec had been opened for edit in a numbered changelist and then reverted, 'p4 change -o clno' would still show the stream spec in the changelist. Fixed so that that the reverted stream spec no longer shows up in the changelist. #1840313 (Job #99534) ** If a stream spec has been shelved in a numbered changelist and then reverted, editing the changelist would result in warning that the stream spec is not open, even if the stream spec name was unchanged. This was problematic for downstream applications. Fixed, so that if the name is changed, the warning is still generated and the change is not saved. However if the name is not changed, no warning is issued. Also added a comment "Shelved, not opened" to the stream field of the change spec output for this case. #1838469 (Job #99468) ** If a stream spec was opened in a numbered change list, the changelist was shelved, the opened stream spec was reverted, and then the stream spec was deleted from the shelf, 'p4 change -o clno' would still show the stream spec in the changelist. Fixed, so the new behavior no longer shows the stream spec in the changelist. #1836989 (Job #99436) ** 'p4 shelve -As ' and 'p4 unshelve -As ' are not legal uses of the commands, but were allowed. Now an usage error is returned in both cases. #1836483 (Job #99413) ** For a stream spec in a changelist, the tagged output of 'p4 -ztag change -o clno' and 'p4 -ztag changes' will now report a 'streamState' tag with values of 'streamOpened', 'streamShelved', 'streamOpenedShelved', or 'streamSubmitted'. #1834884 (Job #99267) ** Using 'p4 submit -b' with triggers could cause triggers to return failure status on Linux platforms when no failure occured. This has been fixed. #1834169 (Job #99391) ** Added a stream spec digest to the output of 'p4 -ztag stream -o' and 'p4 -ztag describe -S clno'. Added a stream spec diff to the output of 'p4 describe -S clno'. The difference is between the stream spec version in the given changelist number and the head version of the stream spec. #1831717 (Job #99288) ** 'p4 revert -So' would incorrectly remove the stream name from a shelved or submitted changelist. This has been fixed. #1831716 (Job #99275) ** Changed MsgDm::StreamMustResolve from a warning to an error. #1832439 (Job #98561) ** Changed "p4 graph receive-pack" to allow tag deletion. This also fixes the issue for tag deletion via push from git to Git-connector: git push --delete #1830302 (Job #99247) ** Enabled triggers for submitting and shelving for stream specs. If an opened stream spec is submitted or shelved, and if a trigger is defined with a file spec of either '//stream/name' or '//stream/name/...', then the trigger will be invoked. The trigger variable %stream% will be set to the name of the stream. #1829838 (Job #99300) ** Journal header notes included with database table unloads created by 'p4 journaldbchecksums -u' now contain the correct case/unicode flags and the server root of the server they were unloaded from. #1830740 (Job #99382) ** Support for Helix Core Extensions was disabled for Windows servers due to unrelated performance concerns on that platform requiring a conflicting toolchain change. Extensions remain fully supported on Linux and Mac. #1828396 (Job #99271) ** When 'p4 stream -o' was called at a change that did not match a stream spec modification, the most recent stream spec would be returned. The new behavior is to return the most recent version prior to the specified change. #1827416 (Job #98909) ** 'p4 change -df' of submitted changes containing stream edits now displays the correct messages about the stream and files in the change that prevent the delete. #1825235 (Job #99035) ** Multiple stream specs could be shelved to the same shelf number. This has been fixed. #1825187 (Job #99106) ** Users could see the description of a restricted submitted change using 'p4 changes' or 'p4 change -o' when having list access to a directory that is common to all files in that changelist without having list access to the specific files in the change. This has been fixed. #1824517 (Job #98988) ** 'p4 streamlog' now correctly reports all stream spec changes regardless of which fields were changed. #1824117 (Job #99184) ** 'p4 shelve -As -d' now deletes the stream from the shelf. Therefore, the message it returns is now correct. #1823281 (Job #99158) ** 'p4 diff2' run by a user with only list access could cause a crash. This has been fixed. #1822891 (Job #98978) ** 'p4 switch' now reports the correct target stream name on error. #1822172 (Job #99042) ** 'p4 stream -o //streamname@changelist' now includes the specified version rather than the current version of all fields. Previously, only the Paths, Parent and Type field would be the specified version, and all other fields would be the current version. This fix applies only to data created by the 19.1 server and later. #1822042 (Job #98542) ** A temporary lock now prevents concurrent updates to an RCS file. #1821878 (Job #99077) ** A race condition can no longer cause a lock (.lck) file to remain after use. #1821475 (Job #99141) ** 'p4 submit -i' run against an edge server using background transfer would failed to submit the change. This has been fixed. #1821208 (Job #98861) ** 'p4 renameuser' could leave orphaned locks when the user being renamed had opened exclusive checkout files (+l). This has been fixed. #1820930 (Job #99117) ** 'p4 protects -M' was not displaying the correct result in P4AUTH environments. Additionally, the path handling for this command was only considering protections that matched all of the provided path not just a portion of that path. This has been fixed. #1820503 (Job #99098) ** Updated shelving messages relating to stream specs. Now if an opened stream spec was implicitly or explicitly specified to be shelved but is not in the changelist, an appropriate error message appears. #1819042 (Job #98967) ** A 'p4 shelve' command with no arguments would fail to shelve an opened stream spec. This has been fixed. #1818502 (Job #99050) ** The db.storage upgrade process (phase 1) was incorrectly executing on forwarding replicas. This has been fixed. #1818437 (Job #99010) ** A 'p4 stream -o //streampath@=shelf' command will now display a shelved stream spec, where "streampath" is the name of the stream and "shelf" is the changelist number of the changelist which is shelved. #1818393 (Job #99041, #99074) ** 'p4 shelve' would output messages about shelving files when only a stream spec was shelved. This has been fixed. #1818105 (Job #99075) ** 'p4 reopen' now has a '-Si' flag for moving open stream specs and files between changelists in a single command. #1816910 (Job #98925, #98910) ** Submitted changes containing stream-only edits now have the correct "root" field set in the db.change table. #1816226 (Job #99003, #99022)** 'p4 describe -S' would not always show accurate information about shelved stream specs. This has been fixed. #1814927 (Job #98586) ** The storage error file generated during an upgrade to 19.1 was always being created even if no errors were detected. This has been fixed. #1814802 (Job #97697) ** A 'p4 shelve -d' command could fail to remove an unneeded librarian file. This has been fixed. #1814745 (Job #98294) ** 'p4 storage -u' run against an edge server will now only update the local shelf storage records. #1814074 (Job #96617) * Threaded parallel sync could occasionally fail to chmod or rename temp files. This has been fixed. #1813039 (Job #98855) ** Relative file paths passed into 'p4 graph lfs-lock' commands are now handled correctly. #1813017 (Job #98710) ** Clarify help text for 'p4 grant-permission'. #1810430 (Job #98540) * When P4CLIENTPATH is set, clients can no longer create symlinks that could be followed to access paths outide of the sandbox. #1809639 (Job #97003) ** 'p4 diff -As' and 'p4 diff2 -As' allow stream specs to be compared. Shelved streams can be referenced with the @= notation. Bugs fixed in 2019.1 Patch 1 (2019.1/1813586) #1808413 (Job #98605) ** Submitting import+ files from a task stream could cause corruption to its task stream. This has been fixed. #1807936 (Job #96532) ** 'p4 describe' would erroneously show a filetype for the prior version of an added file. This has been fixed. #1807617 (Job #98544, #97979) ** All stream updates now create associated changelists rather than just consuming changelist numbers. #1806502 (Job #98766) ** The p4 configuration setting 'submit.allowbgtransfer=1' would cause replica file content pull threads using '--batch' to crash. This has been fixed. #1805822 (Job #98424) ** Certain commands were requiring the user to log in to all upstream edges, not just the edge the user is connecting to. This has been fixed. #1805680 (Job #97885) ** 'p4 graph lfs-lock' is no longer allowed for non-LFS graph files. #1805524 (Job #97669) * ** *** **** SSL connections that negotiated with TLS 1.1 and above handshakes were rejected as plaintext. This has been fixed. Note that successful negotiation would still result in the use up to TLS 1.2 regardless of the version used for negotiation. #1803226 (Job #98543) ** A StreamNeedsResolve message would occur upon submit if another user made changes identical to the current open stream spec. This has been fixed. #1802979 (Job #94895) ** Under some conditions, when successive task streams were created and populated, a superuser could delete a change with files in the changelist. This has been fixed. #1802016 (Job #97847) ** Normalize the target ref when testing for LFS locks during 'p4 undo --repo'. #1799999 (Job #98500) ** 'p4 filelog' results containing huge descriptions or many integration paths results in Rpc buffers too big. Fixed. #1799583 (Job #94400) ** 'p4 help-graph client' now shows proper syntax lines for graph depots. It includes reference for finding flag descriptions and explanation about how hybrid scenario works. #1798894 (Job #97895) ** In some cases 'p4 -ztag stream -o //streampath@have' would result in a message where the stream name was printed, but the client name should have been reported instead. #1798095 (Job #98367) ** If 'p4 unshelve' acts on a shelf with files which are inaccessible to the current user and client, the first file in the filelist would be displayed for each file in list. This has been fixed so that each filename is displayed instead of the first file. #1798061 (Job #97962) ** 'p4 resolve -So' now displays "No stream fields to resolve." if there are no open stream fields which need to be resolved. #1791371 (Job #98467) ** Fixed 'p4 submit -Sx' and 'p4 submit -So' for edge servers. #1782033 (Job #97820, #98182) ** 'p4 resolve -So' did not detect a conflict for an open modified stream spec when another client/user made a public edit of the same stream spec. Fixed. Bugs fixed in 2019.1 (2019.1/1796703) #1787364 (Job #98256) ** The 'p4d -xu' command no longer actually executes the upgrades on a standby or forwarding standby server. The upgrades are applied as they are journalcopy'd from the upstream server. The 'p4d -xu' command is still required to help prevent unintentionally upgrading the server by mistakenly starting the server using a binary from a new major release. #1782963 (Job #98117) ** 'p4 pull' could fail to replicate spec depot archives due to a race condition introduced by a performance enhancement in release 2018.2. This has been fixed. #1782803 (Job #95173) ** 'p4 describe' would report errors when run against shelved changelists created by 'p4 switch'. This has been fixed. #1781879 (Job #92961) ** Successful OTP based 2FA events logged to the auth.csv structured log were incorrectly recorded as failures. This has been fixed. #1780867 (Job #97063) * Parallel sync now respects the '-C charset' client flag. #1780019 (Job #97125) ** 'p4 unshelve' and 'p4 revert' now update syncTime, correcting the behavior of 'p4 reconcile -m'. #1777076 (Job #98218) ** Revert of moved file when the moved-from file was deleted at the head revision in a edge/commit environment could have had unpredictable results due to accessing uninitialized data. This has been fixed. #1775117 (Job #98350) ** 'p4d -xu' may no longer be run with '-Joff'. Some upgrade steps make metadata changes that must be reduplicated, which cannot happen when the upgrades are run with journaling disabled. #1773233 (Job #97211) ** Submitting unshelved ktext files with undo actions could cause incorrect tamper errors. This has been fixed. #1772348 (Job #97898) * The 'p4 clone' command could fail when using remote specifications with DepotMap paths containing spaces. This has been fixed. #1768961 (Job #97460) ** The 'mandatory' option is now disallowed when creating a new standby or forwarding standby server. After the standby or forwarding standby server's journalcopy thread has caught up with the journal on the server from which it is journalcopy'ing, the 'mandatory' option can then be set for an HA standby server. #1768266 (Job #98019) ** Stream specs that are not at latest or are being privately edited no longer show comments on the fields that were or are being edited. #1766398 (Job #97896) ** Graph depot commands now open a maximum of 128 pack files at the same time. #1765852 (Job #97211) ** 'p4 fstat' could show an invalid or missing haveRev value when a file that was deleted is being re-added. This has been fixed. #1763055 (Job #95105) ** Larger journal fragments will now by default be sent to journalcopy. The 'rpl.jnl.batch.size' configurable as defined for the server executing the journalcopy (which is generally a standby server) can be used to tune the journal fragments sent to journalcopy. #1758633 (Job #97773) ** 'p4 receive-pack' would downgrade the force push to a new repos to a normal push. This has been fixed. #1757383 (Job #96635) ** P4DEBUG configuration set with 'p4d -v' could be incorrectly parsed if a non-numeric value was followed by additional options. This has been fixed. #1745310 (Job #96271) ** Under certain conditions a submit from an edge server in an autotune enabled environment from an old Windows client application could hang. This has been fixed. #1743439 (Job #96758) ** 'p4 failover' now checks to ensure that the standby is suitably licensed for its role following failover. #1742700 (Job #93206) ** 'p4 reconcile' would fail with 'Opening too many files' error when enforcing the 'MaxOpenFiles' group limit, even when the command opened less than 'MaxOpenFiles'. This has been fixed. #1739928 (Job #95194) ** 'p4 delete' against graph depot files that are in the have exception list could remain in the exception list even after the change was submitted. This has been fixed. #1734228 (Job #96791) ** Prior to failing over, 'p4 failover' now checks to ensure that there are no archive file content transfers that were not completed on the standby. #1732870 (Job #94976) ** The 'p4 revert' command now batches its journal work into fewer larger transactions, resulting in more efficient replication of this command. #1728271 (Job #96335) ** Admin users could not unlock files that had been locked by a failed 'p4 push'. This has been fixed. #1726773 (Job #93725) ** Virtual streams would incorrectly import from the stream's parent's parent when the import path was specified with a single path. This has been fixed so that the path imported is from the virtual stream's parent. #1726440 (Job #96818) ** A client's have records could be incorrectly overwritten when syncing to #have and the client's view included ditto mappings. This has been fixed. #1726251 (Job #96545) ** 'p4 user -D' no longer implies the '-F' flag. To globally delete a user, their client workspaces and remove them from groups and the protections table, both flags must be provided 'p4 user -D -F'. #1723981 (Job #96826) ** 'p4 failover' no longer hangs waiting for the 'pull -L' thread to complete its work if the LEOF had not been advanced to the last consistency point journalcopy'd by the standby and either the master does not participate in the failover or some mandatory standby is not actively journalcopy'ing at the time of the failover. #1722715 (Job #92743) * Client-side UTF8 validation failed to detect files that terminated part way through a multi-byte character. This has been fixed. #1722358 (Job #96273) ** Certain DVCS scenarios could lead to an 'Invalid zipfile format' error related to rev records counts being off. Improved error checking now produces a more comprehensive error message on the sending side of the DVCS operation. #1720213 (Job #96546) ** The 'p4 clean' command would incorrectly count workspace file updates against the 'MaxOpenFiles' group limit causing the command to fail. This has been fixed. #1718223 (Job #94828) ** If characters in a commit short-SHA are all numeric, sync fails assuming that the all numeric short-SHA is a change number. This has been fixed. ------------------------------------------------------------------------- Major new functionality in 2018.2 #1688531 (Job #95155) ** The new 'p4 failover' command can be used for failing over a master (or edge) server to a standby (or forwarding-standby) server that is journalcopy'ing from the master server. Run on a standby server, the command orchestrates many facets of the failover process, including: Ensure that monitoring ('p4 monitor') is enabled on the standby server Coordinate with the standby server's 'pull -L' thread to ensure that the standby server has applied the metadata journalcopy'd from the master server Verify recently updated classic depot file content Move the latest journalcopy into place as the journal that will be used following failover Enable journaling on the standby server Update the configuration of the master server Update the serverID of the standby server to the master server's serverID Restart the standby server as the new master server If the master server participates in the failover, the 'p4 failover' command also orchestrates: Quiesce the master server: refuse new commands on the master server, wait a fixed amount of time for existing commands to complete, and then stall any remaining commands Coordinate with the standby server's 'journalcopy' and 'pull -u' threads to ensure that the standby server has all of the latest metadata and file content from the master server Stop the master server If the 'p4 failover' command is interrupted or encounters an error, the command will attempt to undo what has been done up to that point. But if the command has stopped the master server, that server will not be restarted. The standby server must be licensed as needed to function as the master server following failover. Prior to failing over an edge server, its service user should be logged into the commit (or master) server using the file specified by the P4TICKETS configurable for each standby of the edge server. And if needed, trust with the commit server for the service user should be established using the file specified by the P4TRUST configurable for each standby of the edge server. The 'p4 failover' command might update some of the configurables for the master server to ensure that it will function as expected when the command starts it in the environment within which the standby server was running. The configurables that might be updated are: P4AUDIT client.readonly.dir server.depot.root P4JOURNAL client.sendq.dir server.extensions.dir P4LOG journalPrefix server.locks.dir P4ROOT pull.trigger.dir statefile P4TICKETS rpl.journal.ack P4TRUST rpl.journal.ack.min When failing over an edge server, the update of its configurables cannot be propagated back to the commit (or master) server since the edge server might not be participating in the failover. After the failover, the updated configurables for the edge server will need to be changed on the commit server. In support of the new 'p4 failover' command, three fields have been added to the db.server table: Options, ReplicatingFrom, and FailoverSeen. The Options and ReplicatingFrom fields are part of a server's spec and can be changed using the 'p4 server' command. The ReplicatingFrom field is required for standby servers. Of particular note is the 'mandatory' option of the Options field in the server spec. When set for a standby server, that server will always participate in the calculation that determines when metadata is replicated to replicas (other than standby servers.) That is, metadata must be journalcopy'd to all mandatory standby servers before it will be replicated to other replicas. If a mandatory standby server is desired, it is recommended that it is initially deployed using the 'nomandatory' option. After the standby server's journalcopy thread has caught up with the master server, the 'mandatory' option can then be set in the server spec for the standby server on the master server. If the master server does not participate in the failover, the standby server on which the 'p4 failover' command is run must be a mandatory standby server. This ensures that replicas remain consistent with the master server following failover. There are several new files, typically in the P4ROOT directory, that contain journal positions related to this new functionality. They are the 'stateLEOF', 'statefailover', and 'statepullL' files. The 'stateLEOF' file contains the journal position of the last transaction replicated to replicas (other than standby servers) of the master server. This file is present for all standby servers of the master server if at least one of those is a mandatory standby server. If the 'stateLEOF' file is present, the 'pull -L' thread will apply to the standby server's metadata only what has been journalcopy'd through that journal position. This ensures the consistency of the metadata on the standby servers with the new master server when failover occurs without participation of the old master server. The 'statefailover' file will be deleted automatically when it is no longer needed; it persists after the failover to ensure the consistency of the journalcopy for the remaining standby servers. So that the 'statefailover' file can be deleted automatically, the ReplicatingFrom field must have a value in the server spec for all standby (and forwarding-standby) servers defined in the master server. Additional information is available from 'p4 help failover' and in the "Failover" section of the "Backup and recovery" chapter in the "Helix Core Server Administrator Guide: Fundamentals" manual. Technology Preview features in 2018.2 #1690230 (Job #48387) ** The Helix Core Extension mechanism is a feature that allows the server to run administrator-supplied scripts written in the Lua programming language, packaged with metadata and other resources. The server runs these programs natively, providing a portable, versioned runtime with automatic replication and a programmatic API. Depot and repo owners may configure Extensions to operate on the areas they own without involving the super user. The scripting runtime is also available on the command-line client, via the 'p4 --script' flag. See 'p4 help extension' for further info. Note: Extensions are not available with the Helix Versioning Engine on Windows platforms. Minor new functionality in 2018.2 #1707299 (Job #91576) ** When unshelving an exclusively-locked file by another client, "p4 unshelve" reports the error message as a 'warning' rather than an 'info'. Output messages for "p4 edit/delete/reconcile/integ" are also changed similarly. This change will only affect the message type. The command return value will not change. To get the old behavior use p4 option -Zapi=[84 or earlier]. #1701226 (Job #94362) ** The graph rebase command no longer duplicates commits; commits that would have no diff when replayed are now skipped. #1700123 (Job #94681) ** All graph reference triggers will now populate the %refType% and %refFlags% placeholders. #1697842 (Job #96191) ** A new 'auth-invalidate' trigger has been added. This is fired when a user's ticket is explicitly invalidated by 'p4 logout'. #1693278 (Job #95956) ** The parallel sync 'db.sendq' table may now be partitioned, reducing lock contention, by setting the 'client.sendq.dir' configurable to a directory under which the per-client tables will be created. The specified directory may be set to the same as the have partition directory 'client.readonly.dir'. #1689195 (Job #96066) ** 'p4 monitor show' now always shows 'pull -L' for the thread that applies metadata from a local journal. Showing the '-L' flag helps distinguish this thread from other pull threads. #1685442 (Job #95168) ** 'p4 undo' is now supported for graph depots. See 'p4 help-graph undo'. #1678111 (Job #95713) ** Additional configurables have been added for modifying the authentication behavior when auth-check-sso triggers are installed. Setting 'auth.sso.allow.passwd=1' will allow client's without the client-side P4LOGINSSO trigger configured to fall back to password authentication against the database. Setting 'auth.sso.nonldap=1' will allow non-LDAP users on an LDAP enabled servers to authenticate against the auth-check-sso trigger. When 'auth.sso.nonldap=1' is set, non-LDAP users will be required to have the client-side P4LOGINSSO trigger configured, unless the 'auth.sso.allow.passwd=1' is also set. #1677404 (Job #95408) ** The tagged output for 'p4 change -o' now includes a shelveUpdate field, showing the last time shelved files on the change were updated. #1676951 (Job #43827, #95824) ** New -D flag in 'p4 user' that deletes the user and all the user's clients and reverts all the user's files. #1676343 (Job #94823) ** A new 'action.csv' structured log has been added. This logs user initiated events that occur on the server. This log is intended to be consumed by downstream tools that would otherwise poll for changes. #1671478 ** Various compiler upgrades have adopted for better performance and security. These changes have yielded a 10% improvement to the file commit rate on Linux. #1666576 (Job #92539) ** The default value of 'db.monitor.interval' has been changed to 30 seconds. This will allow admins to use 'p4 monitor terminate' to remove stale processes. Note that 'monitor' must also be set to at least 1 in order to use 'p4 monitor terminate'. #1663100 (Job #95230, #95159) ** Additional configuration data may now be sent to client-side P4LOGINSSO triggers by setting the 'auth.sso.args' configurable. The value of this configurable will be passed as the %ssoArgs% to the client-side P4LOGINSSO trigger. Additionally, the server-side auth-check-sso trigger may now use the %email% and %fullname% placeholders. #1644456 (Job #94149) ** The graph related output from 'p4 have' has been improved to be more readable. The branch and sync'ed commit sha are now on the same line. #1644554 (Job #94184) ** Added support for P4IGNORE in graph client Bugs fixed in 2018.2 Patch 10 #2051777 (Job #104945) * ** *** **** OpenSSL has been upgraded to 1.1.1i #2038017 (Job #102314) * Windows clients now correctly report when they are unable to replace files when using the long filename support. #2037903 (Job #102314) ** Clients now correctly report when they are unable to delete files. #2009026 (Job #102750) ** A crash bug would occur when submitting an integration from a local depot to a readonly depot. The integration was illegal, but would succeed with a sync/delete message, and a following submit would crash. This has been fixed. #1998631 (Job #103411) ** 'p4 reshelve' could crash when file arguments were provided. This has been fixed. #1975996 (Job #102797) * Windows clients no longer leave trailing NULL bytes at the end of '+k' filetype files transfered via sync/print when the RCS 'Author' keyword was used and the username submitting the file was changed post-submit. Bugs fixed in 2018.2 Patch 9 #1973761 (Job #102609) Network errors on Windows and Linux are now more accurately reported when additional tracing such as net=3 or ssl=3 are used. #1971411 (Jobs #042042, #102435) ** Windows file I/O now uses the native Windows API rather then the Posix file I/O routines. This removes the limit on the number of concurrent open files for the librarian and error logging. #1970610 (Job #101504) ** A rare error that could lead to database deadlock around journal rotation time has been fixed. #1969996 (Job #72507) ** If a file in a task stream is submitted with the reopen flag, and a resolve had been done prior on the file prior to the submit, then the submit would fail with the messages "Files newly opened or reverted during submission". This has been fixed. Bugs fixed in 2018.2 Patch 8 #1966821 (Job #102541) ** 'p4 unshelve' no longer crashes if a network error is encountered during completion of the command. #1955701 (Job #99520) ** 'p4 tag' run with multiple arguments updating an autoreload label no longer causes the label to be loaded into memory and rewriten to the unload depot for each argument. #1952395 (Job #102264) ** This enhancement supports automatic start of the Perforce p4diag tool when the Perforce Windows Service starts. Two things are required. Place p4diag.exe in the same directory as p4s.exe and p4 set -s Perforce P4DIAGLOG to the p4diag log file name. See the p4diag autostart KB article. #1937480 (Job #101639) ** 'p4 fstat -Ol' for graph depot could crash the server when run on mid-branch and a file there is deleted in the branch tip. #1925276 (Job #100917) ** The 'p4 graph cat-file' command was missing the -o option. This change adds in the missing option. #1925275 (Job #101062) ** When 'p4 have' for graph has no matching repos, it would complete as a failure. This fix changes the failure message "No matching repos" to the warning message "file(s) not on client". #1925274 (Job #100902) ** 'p4 fstat -OI' for graph depots would miss changeCommit if the graph depot index is missing. Now, the changeCommit appears whether or not the index exists. Bugs fixed in 2018.2 Patch 7 #1915408 (Job #101215) ** A memory leak in SSL-enabled servers has been closed. Bugs fixed in 2018.2 Patch 6 #1910107 (Job #99171) ** Partitioned db.sendq tables are now removed if empty at the end of parallel syncs and on client delete. #1909547 * ** *** **** OpenSSL has been upgraded to 1.1.1a #1908978 (Job #93870) ** 'p4d -cset', 'p4d -cunset' and 'p4d -cshow' no longer take write locks on all tables; instead only the tables required are locked. 'p4d -cshow' now only takes read locks. #1908978 (Job #89608) ** 'p4d -cset' and 'p4d -cunset' now resolves the journal file to write too in the same way that the server would if started with the same flags and environment. When using 'p4d -cset' to set P4JOURNAL, if the new value would change the journal file being used, the new value is used instead. #1906390 (Job #100948) ** 'p4 submit' now fails with a "tampered with after resolve" error when trying to submit an unshelved file that is resolved with 'ay' and then modified inadvertently. #1902810 (Job #100608, #100945) ** Avoid error on conflicting clients for commands that are read-only. For 'p4 opened -c ' or -u, the current client of the user is irrelevant and no error should be displayed if that client is tied to another server. The same should be the case for 'p4 client' when the client name is provided as an argument or for 'p4 client -i' which should validate the client name listed in the form rather than the client tied to the user initiating the command. Also, 'p4 revert -C clientname' should ignore the admin's client since it is specified as a parameter. This has been fixed. #1902174 (Job #100158) ** UTF8 type files sync'ed from cache mode replica with a pre-2016.2 client could report a depot file error. This has been fixed. Bugs fixed in 2018.2 Patch 5 #1883953 (Job #100588) ** The server could return a bad result when attempting to join non-matching table keys. This has been fixed. #1882547 (Job #83623) * ** The default value of the 'filesys.lockdelay' has been decreased from 300 to 90 to ensure abandoned .lck files are correctly deleted. Bugs fixed in 2018.2 Patch 4 #1840011 (Job #75382) ** The maximum size of shared memory for monitor table use was too small (2048 8K pages). Now it's 32768 pages for all platforms except Windows 32bit where memory address space is severely limited. #1821148 (Job #99117) ** 'p4 protects -M' was not displaying the correct result in P4AUTH environments. Additionally, the path handling for this command was only considering protections that matched all of the provided path not just a portion of that path. This has been fixed. #1811250 (Job #96617) * Threaded parallel sync could occasionally fail to chmod or rename temp files. #1811202 (Job #98605) ** Submitting import+ files from a task stream could have caused corruption to its task stream. This has been fixed. #1808412 (Job #98651) ** The server can enter an infinite loop trying to join the rev and have table during a sync request using the #have revision specifier and a changed client view. This has been fixed. #1805688 (Job #96532) ** 'p4 describe' would erroneously show the file type of added files as 'unset'. This has been fixed. #1805433 (Job #97669) * ** *** **** SSL connections that negotiated with TLS 1.1 and above handshakes were rejected as plaintext. This has been fixed. Note that successful negotiation would still result in the use up to TLS 1.2 regardless of the version used for negotiation. #1796270 (Job #98117) ** 'p4 pull' could fail to replicate spec depot archives due to a race condition introduced by a performance enhancement in release 2018.2. This has been fixed. 17935460 (Job #98500) ** 'p4 filelog' results containing huge descriptions or many integration paths results in Rpc buffers too big. Fixed. #1790460 (Job #97898) * The 'p4 clone' command could fail when using remote specifications with DepotMap paths containing spaces. This has been fixed. #1782952 (Job #92961) ** Successful OTP based 2FA events logged to the auth.csv structured log were incorrectly recorded as failures. This has been fixed. #1782877 (Job #95173) ** 'p4 describe' would report errors when run against shelved changelists created by 'p4 switch'. This has been fixed. Bugs fixed in 2018.2 Patch 3 #1830737 (Job #99382) ** Support for Helix Core Extensions was disabled for Windows servers due to unrelated performance concerns on that platform requiring a conflicting toolchain change. #1777104 (Job #98218) ** Revert of moved file when the move-from file was deleted at the head revision in a federated environment could have had unpredictable results due to accessing uninitialized data. This has been fixed. #1773516 (Job #94976) ** The 'p4 revert' command now batches its journal work into fewer larger transactions, resulting in more efficient replication of this command. #1772859 (Job #98011) ** Tamper error when submitting unshelved undo action on ktext file has been fixed. #1766398 (Job #97896) ** Graph Depot: impose a maximum of 128 opened packed files. #1762665 (Jobs #97818, #97870, #97871) ** DVCS triggers (push-submit, push-content and push-commit) now support exclusionary mappings in the same way that submit triggers do: the paths of multiple consecutive trigger entries with the same name and type are aggregated into a single map. #1760683 (Job #97566) ** If the listener address of the server from which failover is occurring is defined with an explicit host that is foreign to the standby server's machine, the server to which failover is occurring no longer fails to restart. The foreign host is now removed from the inherited server's listener address definition. #1760113 (Job #97155) ** Deletion of a shelf during a 'p4 submit -e' could leave opened files that could not be reverted. This has been fixed. #1754580 (Job #97618) ** Edge servers no longer allow deletion of a shelf created during the edge server submit process while the submit is in progress. Bugs fixed in 2018.2 Patch 2 #1750136 (Job #95082) **** *** ** * The final select() for Rpc::Close() no longer blocks for ssl connections. The timeout is subject to 'net.maxclosewait'. #1750068 (Job #96682) ** 'p4 submit' for only import+ files in the context of a task stream failed with message "Not permitted to update a task stream and Import+ file at the same time". This has been fixed so that only submitting import+ files is allowed from a task stream. Note that the submission of a mix of import+ files and task stream files is still not allowed. #1748252 (Job #87889) ** 'p4 reopen' run on an edge server did not propagate updates to locks back to the commit server when changing the owner of opened files. This fix requires both the commit and edge server to be upgraded. #1746799 (Job #95435) ** 'p4 undo' was recording the incorrect resolve action when files being undone were modified with 'p4 edit' before submit. This has been fixed. #1743034 (Job #96758) ** 'p4 failover' now checks to ensure that the standby is suitably licensed for its role following failover. Bugs fixed in 2018.2 Patch 1 #1738306 (Job #3933) ** 'p4 print -o' now handles paths with wildcards to write multiple files to the client's filesystem. The wildcards in the -o flags argument and the filespec must match. #1734880 (Job #97134) ** Group protections entries containing wildcards in the group name could cause a server crash. This has been fixed. #1733586 (Job #96791) ** Prior to failing over, 'p4 failover' now checks to ensure that there are no archive file content transfers that were not completed on the standby. #1730693 (Job #97079) * 'p4 login' interrupted by ctrl-c no longer hangs. #1730544 (Job #96839) ** Changing the 'ExtRev' field of a configured extension instance leaves the previous extension instance to remain as a duplicate. This has been fixed. #1729566 (Job #97065) ** 'p4 -ztag info' now shows the 'security' tag when any auth-triggers are present. Additionally, if the auth-check-sso is configured, an 'ssoAuth' tag will also be shown, indicating whether P4LOGINSSO is required or optional. #1729420 (Job #96450) ** 'p4 populate' was incorrectly taking the client's ChangeView into consideration. This command ignores the client view, it now ignores the ChangeView too. #1728264 (Job #96335) ** Locks taken on files after a failed DVCS push could not be unlocked by admin or super users using 'p4 unlock -f' flag. This has been fixed. #1726738 (Job #96662) ** Parallel submit could fail to transfer archive content if the file transfer threads exit without error. This has been fixed by ensuring that archives exist on the server before the submit continues and reports success. #1726440 (Job #96818) ** Syncing to #have when the client view contains ditto mappings could produce the wrong results. This has been fixed. #1723656 (Job #96826) ** 'p4 failover' no longer hangs waiting for the 'pull -L' thread to complete its work if the LEOF had not been advanced to the last consistency point journalcopy'd by the standby and either the master does not participate in the failover or some mandatory standby is not actively journalcopy'ing at the time of the failover. #1723368 (Job #76162) ** 'p4 -ztag info' command now shows an 'unloadSupport' tag indicating if the server has a depot of type unload. The value will be either 'enabled' or 'disabled'. #1722714 (Job #92743) * UTF8 validation would not catch invalid files where the file terminated with a partial multi-byte unicode character. This has been fixed. Bugs fixed in 2018.2 #1716935 (Job #96569) ** The 'p4 switch stream@change' command now takes into account stream imports when syncing files. #1716652 (Job #96588) ** 'p4 fetch -t' run against an edge server could crash the server. This has been fixed. #1716320 (Job #96636) ** 'p4 describe' was not correctly handling graph depot binary files. This has been fixed. #1716305 (Job #96634) ** 'p4 revert' was not correctly handling graph depot LFS binary files. This has been fixed. #1715880,#1718570 (Job #96580) ** Resolve and merge of binary graph files are now handled correctly. #1715337 (Job #96120) ** 'p4 undo' uses the current client mapping when placing undone files in the workspace. File locations maintained in haveMaps are ignored. #1714779 (Job #91876) ** Obliterating a file in the parent of a task stream incorrectly removed the file from the depot. This has been fixed. #1712648 (Job #94695) ** 'p4 integ' of a stream with a +S moved file could propagate wrong content. This has been fixed. #1712118 (Job #86506) ** Unshelved files, opened for integrate, that were not previously sync'ed to the client would be deleted on revert, but the have record would remain causing sync errors later. This has been fixed. #1710647 (Job #95908) ** Tamper checking has been restored for merged ktext files. #1709635 (Job #96468) ** A graph merge -n operation with a conflicting file incorrectly stated that the merge will succeed. This has been fixed. #1709629 (Job #96469) ** A graph merge -n operation did not clean up correctly, failing a subsequent graph merge request. This has been fixed. #1707891 (Job #94445) ** Diff of non-modified graph depot file reported the wrong error message This has been fixed and the message is now "file(s) not opened on this client". #1707354 (Job #96381) ** The 'p4 journals' command when run during a checkpoint operation could hang the server. This has been fixed. #1702795 (Job #95804) ** The use of import+ in a stream spec to include a graph depot path is now blocked instead of being silently ignored. #1702793 (Job #94078) ** Attempting to sync a repo with a badly configured default branch now produces warnings for those repos rather than blocking the sync. #1702779 (Job #96093) ** Graph merges that would result in a fast-forward did not cause the reference triggers to fire. This has been fixed. #1702778 (Job #95055) ** Edge servers no longer replicate graph metadata that are specific to clients on the commit server. #1702035 (Job #96312) ** Processing of stream specs with a large number of exclude and/or isolate paths has been made faster. #1697165 ** The second factor authentication functionality has been renamed to multifactor authentication. This only affects documentation and messages sent to the client; configuration and tagged output have not been changed. #1693712 (Job #95114) ** It was possible for 'p4 filelog' to cause a deadlock with other running commands. This has been fixed. #1693683 (Job #94452) ** The update-ref graph command did not provide the correct value to the %refFlags% field to the graph-push-reference and graph-push-reference-complete triggers. This has been fixed. #1693642 (Job #96127) ** The graph commands merge and rebase now create new changelists associated to the commits they create. #1692620 (Job #96039) ** Files in graph that contain reserved characters could not be specified via standard Perforce commands. These characters may now be escaped when they are specified. #1691921 (Job #96155) ** Improve the performance of group protections. #1690833 (Job #95656) ** Ensure all clients see stream view changes after 'p4 stream edit'. #1689825 (Job #96001) ** The repo and reference permissions are now correctly checked during a graph merge request. It uses the same model as submit and receive-pack. #1689663 (Job #96020) ** A graph merge command with more than one repo and a missing source component can crash the server. This has been fixed. #1688338 (Job #90929) ** Improved the error message generated when opening a graph file in a mixed mode client view that is not of the 'graph' type. It now adds the string "file is mapped read only". #1688292 (Job #90685) ** Changed how the graph permissions are checked during a 'p4 graph receive-pack' command. This copies the methods used by submit and avoids checking each individual file path where possible. #1688251 (Job #94895) ** It was possible for a superuser to delete a non-empty changelist for a task stream. This has been fixed. #1686860 (Job #95988) ** The server no longer crashes when a parallel 'sync -L' is interrupted. #1682979 (Job #86492) ** The obsolete 'Backup' field has been removed from the client spec comments section. #1682468 (Job #73624) ** Shelving replication performance with forwarding (not edge) replicas has been improved. Previously 'shelve -r' would cause all of the archives in the shelved change to be transferred to its forwarding replica. This has been fixed to only transfer files that have changed. #1681302 (Job #92509) ** The -v flag to 'p4 integrate' was moved to undoc in 2016.1. This change moves -v out of undoc and back into 'p4 help integrate' and the 'p4 integrate' usage message, thus making it no longer deprecated. #1680899 (Job #90782, #85175, #75672, #85342) * The command-line client will now run parallel syncs using threads instead of forked processes. #1677801 (Job #95012) ** Edge server processing of a large obliterate, prune, or a task to development stream conversions can encounter replication performance issues with journal hook logging at rpl=4. Journal hook logging is now initiated at rpl=5 instead of rpl=4. #1675879 (Job #91061) ** p4 edit/delete/add will show a warning if the user does not have write privilege for this file. #1673954 (Job #95627) ** 'pull -L' now correctly updates the 'state' file through the end of consistency points containing only entries that don't actually apply any metadata (e.g. @nx@ and @ex@ entries). #1673827 (Job #69353) ** 'p4 pull -u' will stop trying to pull archive content if it detects that the content is missing or corrupt on the master. #1671476 (Job #95082) **** *** ** * The Rpc::Close() P4API function no longer does a blocking select(). Use the 'net.maxclosewait' configurable to control the timeout (defaults to 1 second). #1653848 (Job #95033) ** A scheduled checkpoint on a 'standby' or 'forwarding-standby' server executed when the master server's journal is rotated no longer corrupts the prior journalcopy'd journal. -------------------------------------------------------------------------- Major new functionality in 2018.1 #1623544 ** Further Graph Depot enhancements. The commands which allow direct contribution to the git data model have undergone improvements. Most notably, submits of changes that affect multiple repos are now performed atomically, with the resulting changelist recording the resulting commits so that their association is not lost. #1622318 (Job #10428) ** 'p4d -jr' will now automatically recognize that a checkpoint or journal is compressed when restoring either. It is now possible to chain compressed and uncompressed checkpoint and journal files during restoration in a single command by omitting the -z option. #1617715 (Job #92977, #94460, #94461) ** On-demand fetch of graph depot objects from a master server is now supported for 'p4 diff2', 'p4 sync' (including parallel), 'p4 fstat -Ol', 'p4 print', and 'p4 describe'. This enables reliable replication for supported graph depot read-only commands. #1616256 (Job #91300) ** A new command 'p4 admin end-journal' has been added that allows a standard or operator user, with super access, to end a journal being replicated to a standby server via 'journalcopy' at the last replicated consistency point. The 'journalcopy' thread is stopped, and the journal number and the offset of that last replicated consistency point is returned. This feature is required to facilitate some advanced failover strategies. #1603239 (Job #50063) ** Stream path definitions may now include a wildcard in the final expression of a path, following the last slash. This is useful should you wish to refer to a collection of files, such as - path_type pattern/to/....exe (or) path_type pattern/to/*.txt #1601670 (Job #92974) ** The new command 'p4 graph rebase' has been added to allow rebasing of commits within graph depot. #1596216 (Job #92976) ** The non-interactive graph depot 'p4 merge' now supports specifying multiple repos, which will be merged atomically. This ensures that if a merge on any repo would fail, none are performed. #1630915 (Job #48959) ** Second factor authentication is now a supported server feature. Users can now be configured to require second factor authentication on a per host basis. This involves first enabling second factor authentication by adding 3 new auth triggers and then setting the 2FA modifier on the user's AuthMethod in the user spec (it can be used with either 'perforce' or 'ldap'). The new triggers are: * auth-pre-2fa - returns a list of second factor authentication methods that the user may use. * auth-init-2fa - begins the second factor authentication process for a given method. * auth-check-2fa - verifies a one-time-password/token/passphrase/etc against the second factor authentication service or checks the status of an ongoing session. The output of these triggers is complex. For details and examples, see the 'p4 help 2fa' documentation and http://answers.perforce.com/articles/KB/15334 Please note that not all client applications have added support for second factor authentication yet. Minor new functionality in 2018.1 #1623544 ** The following commands previously documented as technology preview features) are now supported for use in conjunction with the git data model: filelog, fstat, non-interactive merge. (For more information see 'p4 help-graph'). #1622291 (Job #77528) ** The new 'rpl.journalcopy.location' configurable can be used to change the prefix of the filepath where the current journalcopy'd journal is written. With the default value of zero, the current journalcopy'd journal is written directly to the filepath with a prefix of the standby server's 'journalPrefix' configurable. With a value of one, the current journalcopy'd journal is written alongside where the standby server's P4JOURNAL would be written, and then rotated to the filepath with a prefix of the standby server's 'journalPrefix' configurable. The effect of changing the value of the 'rpl.journalcopy.location' configurable occurs when the standby server replicates the P4TARGET's journal rotation. journalcopy'd journals will always have their journal number in the suffix. #1620269 (Job #60462) ** The new configurable 'dm.info.hide', when set to '1', prevents 'p4 info' from returning sensitive data to unauthenticated users. This is primarily aimed at servers running on public networks. #1620201 (Job #93347) ** "p4 graph show-ref" may now be provided with a "-e" or "-E" flag to filter the returned references by name. #1619740 (Job #92904) ** "p4 graph tag -l" now lists tags from all repos when no repo is specified. #1619150 (Job #91132) ** The new command 'p4 show-permissions' has been added. This is the graph permissions equivalent of 'p4 protects', providing a user-centric view of granted permissions. #1617808 (Job #94207) ** The second factor authentication triggers now provide the user's email address and full name in the %email% and %fullname% variables. The values of these variables come from the user spec. If user modification of these fields in the user's user spec is undesirable, setting the new configurable 'dm.user.allowselfupdate' to '0' will prevent those fields be being changed by the user. #1614722 (Job #92878) ** The graph depot index table (db.graphindex) now stores a file's size, type and LFS OID. Any previously-indexed graph depot repos must be manually re-indexed after upgrade. #1612161 (Job #90744) ** LDAP user auto-creation may now prevent users being created if they would have no permissions on the server. To enable this, the 'auth.ldap.userautocreate' must be set to '2'. #1610807 (Job #93604) ** Replicas now support syncing LFS files from graph depots. #1609265 (Job #90487) ** A new structured log 'ldapsync.csv' has been added to record the activity of 'p4 ldapsync'. #1608660 (Job #92975) ** The graph-push-reference* triggers now pass the original reference value in the %oldValue% variable. When these triggers are fired from 'p4 graph receive-pack', the reference type is passed in the %refType% variable and the %refFlags% variable is populated with a list of actions that are being applied to the reference. #1595764 (Job #93545) ** A new configurable 'auth.tickets.nounlocked' has been added, providing a means of preventing 'p4 login -a' from issuing host unlocked tickets. When set to '1', the '-a' flag is silently ignored and the users always be issued host locked tickets. When the configurable is set to '2', the '-a' flag is explicitly disabled and the user will get an error if they try to use it. If either value is set, the tagged output from 'p4 info' will show unlockedTickets disabled. #1586092 (Job #93002) ** 'p4 filelog' is now supported when specifying a graph depot paths. #1583012 (Job #92967) ** 'p4 configure set' now validates numeric configurables to prevent them from being set outside of their acceptable ranges. Previously configurables set outside of the acceptable ranges were silently altered to the minimum or maximum values when used; this meant that the values reported as being set and the values actually used were different. Configurables already set outside the acceptable ranges will continue to be silently altered. -------------------------------------------------------------------------- Bugs fixed in 2018.1 Patch 16 #1937483 (Job #101639) ** 'p4 fstat -Ol' for graph depot could crash the server when run on mid-branch and a file there is deleted in the branch tip. #1925278 (Job #100902) ** 'p4 fstat -OI' for graph depots would miss changeCommit if the graph depot index is missing. Now, the changeCommit appears whether or not the index exists. #1925277 (Job #101062) ** When 'p4 have' for graph has no matching repos, it would complete as a failure. This fix changes the failure message "No matching repos" to the warning message "file(s) not on client". Bugs fixed in 2018.1 Patch 15 #1915408 (Job #101215) ** A memory leak in SSL-enabled servers has been closed. #1912798 (Job #95082) * ** *** **** The final select() for Rpc::Close() no longer blocks for ssl connections. The timeout is subject to 'net.maxclosewait'. #1911941 * ** *** **** OpenSSL has been upgraded to 1.1.1a #1908979 (Job #93870, #89608) ** 'p4d -cset' and 'p4d -cunset' now resolves the journal file to write too in the same way that the server would if started with the same flags and environment. When using 'p4d -cset' to set P4JOURNAL, if the new value would change the journal file being used, the new value is used instead. #1906391 (Job #100948) 'p4 submit' now fails with a "tampered with after resolve" error when trying to submit an unshelved file that is resolved with 'ay' and then modified inadvertently. Note that this error is not generated for ktext files. Bugs fixed in 2018.1 Patch 14 #1902668 (Job #100945) ** 'p4 revert -C clientname' should ignore admin's client since the client name is specified as a parameter. This has been fixed. #1902172 (Job #100158) ** UTF8 type files sync'ed from cache mode replica with a pre-2016.2 client could report a depot file error. This has been fixed. Bugs fixed in 2018.1 Patch 13 #1894626 (Job #100608) ** Avoid error on conflicting clients for commands that are read-only. For 'p4 opened -c ' or -u, the current client of the user is irrelevant and no error should be displayed if that client is tied to another server. The same should be the case for 'p4 client' when the client name is provided as an argument or for 'p4 client -i' which should validate the client name listed in the form rather than the client tied to the user initiating the command. #1882546 (Job #83623) * ** The default value of the 'filesys.lockdelay' has been decreased from 300 to 90 to ensure abandoned .lck files are correctly deleted. #1882546 (Job #99077) ** A race condition can no longer cause a lock (.lck) file to remain after use. Bugs fixed in 2018.1 Patch 12 #1821147 (Job #99117) ** 'p4 protects -M' was not displaying the correct result in P4AUTH environments. Additionally, the path handling for this command was only considering protections that matched all of the provided path not just a portion of that path. This has been fixed. #1808412 (Job #98651) ** The server can enter an infinite loop trying to join the rev and have table during a sync request using the #have revision specifier and a changed client view. This has been fixed. #1805434 (Job #97669) * ** *** **** SSL connections that negotiated with TLS 1.1 and above handshakes were rejected as plaintext. This has been fixed. Note that successful negotiation would still result in the use up to TLS 1.2 regardless of the version used for negotiation. Bugs fixed in 2018.1 Patch 11 #1795237 (Job #95627) ** 'pull -L' now correctly updates the 'state' file through the end of consistency points containing only entries that don't actually apply any metadata (e.g. @nx@ and @ex@ entries). #1790547 (Job #97898) * The 'p4 clone' command could fail when using remote specifications with DepotMap paths containing spaces. This has been fixed. #1782941 (Job #92961) ** Successful OTP based 2FA events logged to the auth.csv structured log were incorrectly recorded as failures. This has been fixed. #1782878 (Job #95173) ** 'p4 describe' would report errors when run against shelved changelists created by 'p4 switch'. This has been fixed. Bugs fixed in 2018.1 Patch 10 #1762664 (Job #97818, #97870, #97871) ** DVCS triggers (push-submit, push-content and push-commit) now support exclusionary mappings in the same way that submit triggers do: the paths of multiple consecutive trigger entries with the same name and type are aggregated into a single map. #1760169 (Job #97155) ** Deletion of a shelf during a 'p4 submit -e' could leave opened files that could not be reverted. This has been fixed. #1754469 (Job #97618) ** Edge servers no longer allow deletion of a shelf created during the edge server submit process while the submit is in progress. Bugs fixed in 2018.1 Patch 9 #1751790 (Job #97585) ** 'p4 user -d' run against a very specific configured replica would fail to lock the correct database tables and could cause a deadlock. This has been fixed. #1747841 (Job #95435) ** 'p4 undo' was recording the incorrect resolve action when files being undone were modified with 'p4 edit' before submit. This has been fixed. Bugs fixed in 2018.1 Patch 8 #1734993 (Job #97134) ** Group protections entries containing wildcards in the group name could cause a server crash. This has been fixed. #1730852 (Job #92743) * UTF8 validation would not catch some invalid files. When a file terminated with a partial unicode, the client would not detect the error. This has been fixed. #1728426 (Job #96335) ** Admin/super user cannot unlock files after failed/rejected DVCS push Running p4 -c unlock -f -r //path/to/file returns a permission error when done by admin while it should be allowed because of the -f option. This has been fixed. #1727238 (Job #96662) ** Parallel submit could fail to transfer archive content if the file transfer threads exit without error. This has been fixed by insuring that archives exist on the server before the submit continues and reports success. #1726525 (Job #96818) ** The have table can be corrupted with the use of 'and' mapppings set to a specific revision. This has been fixed. #1726395 (Job #96469) ** A graph merge -n operation did not clean up correctly, failing a subsequent graph merge request. This has been fixed. #1726388 (Job #96468) ** A graph merge -n operation with a conflicting file incorrectly stated that the merge will succeed. This has been fixed. #1720347 (Job #94695) ** 'p4 integ' of a stream with a +S moved file could propagate wrong content. This has been fixed. #1717005 (Job #96569) ** The 'p4 switch stream@change' command now takes into account stream imports when syncing files. Bugs fixed in 2018.1 Patch 7 #1714682 (Job #96120) ** 'p4 undo' uses current client mapping when placing undone files in workspace. File locations maintained in haveMaps are ignored. #1709104 (Job #96381) ** The 'p4 journals' command when run during a checkpoint operation could hang the server. This has been fixed. #1707877 (Job #96312) ** Processing of stream specs with a large number of exclude and/or isolate paths has been made faster. #1706332 (Job #96438) ** A proxy in front of an edge server now allows 'p4 login' to be run when 'rpl.forward.login=1' is set. #1706331 (Job #96326) ** On-demand replication of graph files containing reserved characters in their paths would fail. This has been fixed. Bugs fixed in 2018.1 Patch 6 #1703579 (Job #96370) For graph clients, 'p4 add -f filepath' succeeds when the filepath contains a asterisk. #1697902 (Job #96279) ** There was a memory leak when checking the permissions for graph merge actions. This has been fixed. Bugs fixed in 2018.1 Patch 5 #1689825 (Job #96001) ** The repo and reference permissions are now correctly checked during a graph merge request. It uses the same model as submit and receive-pack. #1688292 (Job #90685) ** Change how the graph permissions are checked during a 'p4 graph receive-pack' command. This copies the methods used by submit and avoids checking each individual file path where possible. #1692676 (Job #96039) ** Support graph files with reserved characters in their paths originating from git datasets. #1692160 (Job #96155) ** Improve the performance of group protections. #1690481 (Job #95656) ** Ensure all clients see stream view changes after 'p4 stream edit'. #1689663 (Job #96020) ** A graph merge command with more than one repo and a missing source component can crash the server. This has been fixed. Bugs fixed in 2018.1 Patch 4 #1687110 (Job #95988) ** The server no longer crashes when a parallel 'sync -L' is interrupted. Bugs fixed in 2018.1 Patch 3 #1680890 (Job #95177) ** Running 'p4 describe' against a changelist involved in a DVCS push during a push-submit or push-content trigger execution now shows the files associated with that change. #1679672 (Job #95740) ** Improve the performance of graph permissions. #1677079 (Job #95668) ** When a description is passed to a graph merge request, extra text is no longer added to the commit comment. #1676342 (Job #95293) ** A proxy in front of an edge server now allows a user to submit sync'ed files. #1674502 (Job #95639) ** 'p4 filelog' run against a graph file no longer causes issues with successive commands run on the same connection. Bugs fixed in 2018.1 Patch 2 #1672670 (Job #94877) *** Fix new proxytotals reporting accuracy. #1672310 (Job #95546) ** Correct errors caused by the '-d' option with "p4 merge --repo". #1667081 (Job #95136) ** Optimize the 'p4 filelog -m1" for graph repos. The normal and -ztag output format are slightly different. #1666512 (Job #94847) ** The filesys.checklinks configurable will may now be set to '4', providing the same checking as '3' but disallows using '-f' to override the check. #1665939 (Job #95333) ** 'p4 logparse' could fail to find the structured log file under certain conditions. This has been fixed. #1665779 (Job #92403, #95219) ** 'p4 revert -C client' would fail to revert files in the target workspace if that workspace was locked or specified a host other than the one the command was run from. This has been fixed. #1665775 (Job #95317) ** Graph merges reject non-interactive requests that do not have a client mapping. This has been fixed. #1662526 (Job #95163) ** 'p4 show-permissions' would fail to show permissions granted at a depot level when a repo within that depot was specified. This has been fixed. #1658865 (Job #95149) ** The error message produced when a graph merge fails due to a file not being in the client view is incorrect. This has been fixed. 1651515 (Job #94778) ** Provide 'p4 pubkeys [-k key -t type]' lookup. This option verifies existence of an ssh public key. Bugs fixed in 2018.1 Patch 1 #1655243 (Job #95102) ** The database table (db.haveg) for tracking file-specific revisions in a graph depot now correctly retains entries after a user invokes p4 edit followed by p4 revert. #1653784 (Job #95033) ** A scheduled checkpoint on a 'standby' or 'forwarding-standby' server executed when the master server's journal is rotated no longer corrupts the prior journalcopy'd journal. #1651968 (Job #94668) ** If a graph depot client workspace is set to 'noclobber' and the user issues the 'p4 sync ...#0' (or 'p4 sync ...#none') command even though one or more 'noclobber' files cannot be removed from the workspace, the output of the 'p4 have' command correctly displays 'File specific revisions' instead of 'File(s) not on client'. #1650350 (Job #93996) ** Graph permissions of at least read level are now required before graph depots are made visible to users. #1649010 (Job #93650) ** An interactive graph merge operation incorrectly ignored conflicting files outside of the client view. This has been fixed. #1649031 (Job #94528, #94911) ** Graph depot permissions may now be set across all graph depots by specifying '-d *'. Additionally, 'p4 show-permissions' now accepts a '-g' flag show permissions that apply to the specified group. #1646840 (Job #94877) *** Additional logging is now reported by the proxy when track=1 is set. The new proxytotals line records the number of files and the total file size (in MB) transferred to the client from the upstream server and from the proxy's cache. #1645485 (Job #94825) ** 'p4 fstat' using a revision specification on an opened file would hang if the file had ditto mapping. This has been fixed. #1644841 (Job #94890) ** Creation or deletion of a graph branch on a client connected to an edge replica is not supported. A proper error message is now displayed. #1644657 (Job #94670) ** When a file was not sync (eg: noclobber) and was at a different revision than the rest of the graph client workspace, but later was deleted (by another user) and the user attempts to edit it, a proper error will be displayed. #1644215 (Job #94634) ** 'p4 submit' on a graph depot without the "leaveunchanged" submit option would leave unchanged files with read/write permission. This has been fixed. #1643679 (Job #94827) ** Fixed "p4 switch" for graph to work with branch names that are legal, possibly shortened, SHA values. #1643520 (Job #94831) ** A multi-repo graph switch with an empty repo could cause a failure. This has been fixed. #1643295 (Job #94106) ** The help text for graph resolve was incorrect. This has been fixed. #1642219 (Job #93833) ** Adding support for file with wildcards in 'p4 add -f' in graph. #1642206 (Job #94633) ** Symbolic links not deleted properly in graph client with allwrite noclobber. #1641204 (Job #94538) ** Network problems can cause graph submit to process the request in the wrong order. This has been fixed. #1641056 (Job #94742) ** Graph 'p4 sync' would schedule an unneeded resolve if a file that is being synced is opened for edit. This has been fixed. #1640625 (Job #94700) ** p4 describe on a changelist number containing multiple graph repos can sometimes report on only one repo. This has been fixed. #1638175 (Job #94493) ** Graph 'p4 client -d' would not check for opened files before deleting the client. Also the -f option would not revert opened files before deleting the client. These behaviors have been fixed. #1636355 (Job #94567) ** A one-off memory leak in a server using an SSL P4PORT is fixed. #1635754 (Job #94636) ** Unrecognized join-join code in p4 sync in some conditions. Happens when one file is open for edit and p4 sync would add a new file from another submit. The new file will not be added to the workspace and the error will be displayed instead. #1635359 (Job #94621) ** Certain server rejectList settings will no longer block replication. #1634420 (Job #94470) ** 'p4 client -T type' now correctly sets client type when a client template is specified via 'p4 client -t' or the template.client server configurable. #1634347 (Job #94428) ** Clients configured with 'allwrite' now correctly sync lfs files. #1634345 (Job #94255) ** Running 'p4 add -c' against a file already opened for add in a graph depot gave the wrong error. This has been fixed. #1634236 (Job #94599) ** Running 'p4 submit -c' from a graph client against an existing submitted changelist number gave an unhelpful error message. This has been fixed. #1633781 (Job #94559) ** Running 'p4 describe' against a pending changelist owned by a graph client could crash the server. This has been fixed. #1633069 (Job #93131) ** p4 grant|revoke permission now disallows '...' in user/group names. #1633065 (Job #94342) ** 'p4 switch -d' run from a graph type client now warns before deleting a branch that is not merged with its parent (the repo's default branch) and in this case requires the -f force flag to be passed. #1632668, #1628823 (Job #91231, #94494) ** Deletion of empty repos no longer requires the -f flag. #1631097 (Job #94187) ** 'p4 reconcile' run from a graph type client could report the same files added twice under certain conditions. This has been fixed. #1631503 (Job #94555) ** 'p4 graph show-ref -e nameFilter' now supports '.' in ref names. Bugs fixed in 2018.1 #1636440 (Job #94694) ** p4 sync removed +w (for noclobber client) on lfs file during sync #1635359 (Job #94621) ** Certain server rejectList settings will no longer block replication. #1630915 (Job #94537) ** When 'p4 login2 -S check-auth' is run and the second factor authentication service's response is that an external prompt has been rejected, the user's second factor authentication status remained 'required waiting' when it should have transitioned to 'required rejected'. This has been fixed. #1628184 (Job #93747) ** The journalcopy on a Windows standby server from a server running on a platform other than Windows is now journalcopy'd correctly. #1626200 (Job #91459) ** 'p4 receive-pack' now prevents ASCII control characters from being used in reference names. #1625571 (Job #93641) ** 'p4 pull --batch' could cause graph depot pack and index archive files to be transferred using incorrect filenames, resulting in 'Blob data not found' errors from 'p4 sync'. This has been fixed. #1625540 (Job #93916) ** "p4 print -o" is now supported when specifying a graph depot path. Previously the '-o' flag was ignored and the file content would be output to stdout. This has been fixed. #1625385 (Job #93132) ** Providing 'p4 receive-pack' with a truncated pack file could cause the server to crash. This has been fixed. #1624026 (Job #93453) ** Parallel sync of from a graph depot via a forwarding replica may crash the parallel transfer threads. This has been fixed. #1622147 (Job #94348) ** Running 'p4 diff2' against 2 files in different graph depot repos could cause a crash. This has been fixed. #1620977 (Job #92620) ** If a sync of a graph file failed, the server would record that the sync had completed for the entire commit, preventing further sync commands from attempting to retry. The server now records a list of exceptions to the files sync'ed to the have commit so that the sync can be retried. #1620366 (Job #90502) ** 'p4 resolve' in a federated environment could leave orphaned locks after a filetype resolve that changed files from '+l' to filetypes without '+l'. This has been fixed. #1619465 (Job #92050) ** 'p4 dirs' run against a graph depot path would ignore the '-C', '-D' and '-H' flags, returning misleading results. These flags are not supported yet when specifying a graph depot path, and now return no files instead. #1619071 (Job #94219) ** It was possible that a unicode server running on Windows may crash if untranslatable characters were entered in a password when the user logging in is configured to use LDAP authentication. This has been fixed. #1618574 (Job #94247) Post-command triggers for spec-updating commands would get internal RPC callback function names instead of the user command names. For example: 'dm-UpdateClientSpec' instead of 'user-client' for a 'p4 client' command. This has been fixed. #1618387 (Job #94152) ** Creating and deleting the same label at the same time could result in a deadlock, hanging the server. This has been fixed. #1617327 (Job #94225) ** A memory leak when running 'p4 merge' against a graph depot has been fixed. #1614880 (Job #94116) ** A memory leak when running 'p4 shelve -d' without any file arguments has been fixed. #1614541 (Job #93383) ** Active LDAP configs may have been skipped on insensitive platforms due to the case of the LDAP configuration name not matching. This has been fixed. #1614386 (Job #5109) ** 'p4 protect', 'p4 triggers' and 'p4 typemap' now require that the main list field name is present in the spec, even if the list is empty. This is to prevent accidentally resetting these specs from the command line by running 'p4 protect -i' and then using CTRL+C to cancel in the input. #1608123 (Job #93736) ** 'p4 describe -a' for graph depot no longer attempts to display file diff for deleted files. #1604210 (Job #90915) ** The 'p4 reshelve' command would fail to shelve into an existing changelist when run against a non-distributed server running with a serverId. This has been fixed. #1600842 (Job #93672) ** 'p4 graph receive-pack' was completing regardless of failing graph-push-reference triggers. This has been fixed. #1598323 (Job #89751) ** 'p4 graph receive-pack --discard-archives' could remove pack files that were in use by other threads. This has been fixed. #1592596 (Job #92822) * 'p4 ignores -i' no longer concatenates the current working directory to the paths of files specified with absolute files. #1590591 (Job #92898) ** 'p4 logout -a' was not clearing the second factor authentication state for users who's state were set to persistent. This has been fixed. #1589311 (Job #92744) ** Files of type 'utf8' containing content that ends with a partial utf8 sequence will now correctly result in a translation error when attempting to submit from a pre-15.2 client. #1582091 (Job #92754, #81128 ) ** Readonly clients are now allowed to run 'p4 clean' and 'p4 status'. #1577965 (Job #93001) ** 'p4 annotate -I' will no longer terminate abnormally if access to a branch is excluded within some integration histories. #1568232 (Job #91885) ** Submitting a moved 'utf8' file using a pre-15.2 client no longer results in a missing archive. #1562762 (Job #92623) **** When the p4broker is in router mode, an unresponsive altserver might not have its connection error sent to the client. #1561275 (Job #92417) ** A delay in the replication of a consistency point will no longer corrupt the journal written by a 'journalcopy' thread. -------------------------------------------------------------------------- Major new functionality in 2017.2 #1547263 (Job #92369) ** Edge servers now support syncing file content from graph depots. Replication for graph depot archives in both pack file and loose file formats is supported. #1538827 (Job #90551, #90550) ** Replication now supports a method for providing external transfer of archive data. Pull threads may be configured to run with the --trigger option and a pull-archive trigger that will perform the external archive file transfers. In addition, 'p4 submit' can be configured to use external transfer of archives from Edge to Commit servers using ordinary edge-content triggers. This edge-content trigger must call 'p4 fstat -Ob' and an external file transfer command to perform the transfer. For details and examples, see http://answers.perforce.com/articles/KB/15337 Technology Preview features in 2017.2 #1566758 (Job #92605) ** Further Graph Depot enhancements. The following commands, used in conjunction with the git data model are now documented as technology preview features: add, delete, diff, edit, filelog, fstat, merge, opened, revert, submit, switch and graph tag. Those commands that would allow changes to be committed will require the client workspace's Type field to be set to graph. This switches which data model is writable. (For more information see 'p4 help-graph'). #1520950 (Job #48959) ** Second factor authentication support. Users can now be configured to require second factor authentication on a per host basis. This involves first enabling second factor authentication by adding 3 new auth triggers and then setting the 2FA modifier on the user's AuthMethod in the user spec (it can be used with either 'perforce' or 'ldap'). The new triggers are: * auth-pre-2fa - returns a list of second factor authentication methods that the user may use. * auth-init-2fa - begins the second factor authentication process for a given method. * auth-check-2fa - verifies a one-time-password/token/passphrase/etc against the second factor authentication service or checks the status of an ongoing session. The output of these triggers is complex. For details and examples, see the 'p4 help 2fa' documentation and http://answers.perforce.com/articles/KB/15334 Minor new functionality in 2017.2 #1559712 (Job #50586) ** A new command 'p4 bgtask' has been added that allows super users to remotely run programs on the server, or to run them as startup commands. #1558406 (Job #75754) ** 'p4 pull -R' provides an easy way to retry failed 'p4 pull -u' failures. #1556644 (Job #88636) ** 'p4 pull -l' (and 'p4 pull -ls') can now be done on commit server to list submits occurring in an Edge server that are to be replicated to the Commit server. #1553712 (Job #92324) * ** The filesys.checklinks configurable will now allow directory symlinks to be added/reconciled when it's set to the value '3'. #1538126 (Job #91517) ** 'p4 pull -u --batch' can use new --min-size and --max-size options to assign differently sized files to different pull threads. #1536638 (Job #92216) ** All triggers now provide a new 'language' variable that provides the user's specified language. If the user has not specified a language the variable will be set to 'unset'. #1536367 (Job #80896) ** 'p4 shelve' now accepts the '--parallel' flag, to specify that multiple files should be transferred in parallel, using independent network connections from automatically-invoked child processes. In addition, new configurables net.parallel.shelve.* allow 'p4 shelve' to automatically use parallel threads to transfer files. Please see 'p4 help shelve' and 'p4 help configurables' for complete information. #1531997 (Job #29410) ** The 'p4 describe' command now has a '-a' flag that displays the content of added files. #1519158 (Job #14944, #15488) ** The 'p4 changes' command now has a '-r' flag that reverses the command output. -------------------------------------------------------------------------- Bugs fixed in 2017.2 Patch 8 #1805432 (Job #97669) * ** *** **** SSL connections that negotiated with TLS 1.1 and above handshakes were rejected as plaintext. This has been fixed. Note that successful negotiation would still result in the use up to TLS 1.2 regardless of the version used for negotiation. #1782921 (Job #92961) ** Successful OTP based 2FA events logged to the auth.csv structured log were incorrectly recorded as failures. This has been fixed. Bugs fixed in 2017.2 Patch 7 #1760183 (Job #97155) ** Deletion of a shelf during a 'p4 submit -e' could leave opened files that could not be reverted. This has been fixed. #1753593 (Job #97618) ** Edge servers no longer allow deletion of a shelf created during the edge server submit process while the submit is in progress. Bugs fixed in 2017.2 Patch 6 #1747844 (Job #95435) ** 'p4 undo' was recording the incorrect resolve action when files being undone were modified with 'p4 edit' before submit. This has been fixed. #1737174 (Job #97134) ** Group protections entries containing wildcards in the group name could cause a server crash. This has been fixed. #1728431 (Job #96335) ** Admin/super user cannot unlock files after failed/rejected DVCS push Running p4 -c unlock -f -r //path/to/file returns a permission error when done by admin while it should be allowed because of the -f option. This has been fixed. #1727659 (Job #96662 ) ** Parallel submit could fail to transfer archive content if the file transfer threads exit without error. This has been fixed by insuring that archives exist on the server before the submit continues and reports success. #1709635 (Job #96468) ** A graph merge -n operation with a conflicting file incorrectly stated that the merge will succeed. This has been fixed. #1709629 (Job #96469) ** A graph merge -n operation did not clean up correctly, failing a subsequent graph merge request. This has been fixed. Bugs fixed in 2017.2 Patch 5 #1720726 (Job #94695) ** 'p4 integ' of a stream with a +S moved file could propagate wrong content. This has been fixed. #1715429 (Job #96569) ** The 'p4 switch stream@change' command now takes into account stream imports when syncing files. #1709174 (Job #96381) ** The 'p4 journals' command when run during a checkpoint operation could hang the server. This has been fixed. #1703335 (Job #92403, #95219) ** 'p4 revert -C client' would fail to revert files in the target workspace if that workspace was locked or specified a host other than the one the command was run from. This has been fixed. #1692145 (Job #96155) ** Improve the performance of group protections. #1690836 (Job #95656) ** Ensure all clients see stream view changes after 'p4 stream edit'. #1674913 (Job #94847) ** The filesys.checklinks configurable may now be set to '4', providing the same checking as '3' but disallows using '-f' to override the check. #1672655 (Job #94877) *** Fix new proxytotals reporting accuracy. #1653657 (Job #95033) ** A scheduled checkpoint on a 'standby' or 'forwarding-standby' server executed when the master server's journal is rotated no longer corrupts the prior journalcopy'd journal. Bugs fixed in 2017.2 Patch 4 #1648489 (Job #94825) ** 'p4 fstat using a revision specification on an opened file would hang if the file had ditto mapping. This has been fixed. #1647697 (Job #94951) ** Referencing autoreloaded labels uses much less memory. #1646839 (Job #94877) *** Additional logging is now reported by the proxy when track=1 is set. The new proxytotals line records the number of files and the total file size (in MB) transferred to the client from the upstream server and from the proxy's cache. Bugs fixed in 2017.2 Patch 3 #1620423 (Job #90502) ** 'p4 resolve' in a federated environment could leave orphaned locks after a filetype resolve that changed files from '+l' to filetypes without '+l'. This has been fixed. #1618401 (Job #94152) ** Concurrent label create/delete of the same label no longer hangs. #1616808 (Job #94116) ** 'p4 shelve -d' without any file arguments leaks memory. This change fixes the issue. #1614169 (Job #94050) ** Fix for 'p4 keys -e nameFilter' to support a period in key names. #1611860 (Job #92645) ** Parallel sync performance through the proxy has been improved for some scenarios. #1609806 (Job #93947) ** A shelve delete trigger does not fire if the file is specifed in the command and does not exist in the changelist. This has been fixed. #1609792 (Job #93973) ** 'p4 ldapsync -u' would only delete users if a spec depot were present. This has been fixed. Bugs fixed in 2017.2 Patch 2 #1607486 (Job #93936) ** The graph mode of 'p4 merge' would perform a fast-forward when possible, ignoring the --squash flag. This has been fixed. #1606983 (Job #93931) ** The graph mode of 'p4 merge' no longer accepts both --no-ff and --squash at the same time. #1606951 (Job #93857) ** Corrupt git pack indexes now cause errors to be returned. #1606799 (Job #93925) ** 'p4 copy' and 'p4 integ' requests are now rejected for graph clients. #1605825 (Job #93871) ** 'p4 where' run against replica using a partitioned or readonly client could suppress output from additional commands run within the same connection. #1605817 (Job #93794) ** 'p4 files' correctly reports 'no such file(s).' for an empty repo branch. Upgrade to SSL 1.0.2n #1603922 (Job #93716) ** The revert of open files during a 'client -d -f' command are now batched into fewer larger transactions, resulting in more efficient replication of this command. #1600238 (Job #93691) ** 'p4 describe' correctly reports commits containing deleted files. Bugs fixed in 2017.2 Patch 1 #1588156 (Job #92867) ** p4 describe -n will have misleading message when the wrong repo is used for a given commitsha of another repo. Rather than "Blob data not found for sha..." it will display "Commit not found in repo" This has been fixed. #1588156 (Job #92123) ** p4 describe -n repo did not specify file name between each diff segments. Whenever more than 1 file had been changed, there would be no way for a user to know when the first diff segment ends and when the next starts. This has been fixed. #1590975 (Job #93382) ** The use of clients bound to specific servers were not being restricted to those servers in all circumstances. This has been fixed. #1589629 (Job #92849) ** 'p4 rec -a ...' or 'p4 add ...' could cause the client to crash when invoked from the client root and the root directory name has an excessive number of ellipses. This has been fixed. #1587659 (Job #92240) * ** *** **** An experimental fix has been made to solve the write/write deadlock issue that affected the 2017.1 TCP performance improvements. The default behaviour is still for this functionality to be disabled until enough reports of the fix's success have been collected. To enable and test this fix, the configurable 'net.autotune' must be set to 1 on the client, any intermediaries and the server. For example, to enable this in P4V, 'net.autotune=1' must be set in a P4CONFIG file in P4V's startup directory. #1587040 (Job #93117) ** 'p4 pull --trigger' would fail to pull archive files from graph depots and would report "Permission denied" errors in the log. This has been fixed. #1586858 (Job #93136) ** LDAP based user auto-creation, run against a replica not using 'rpl.forward.login', would only create the user on the replica (not on the master). This has been fixed. #1584626 (Job #92894) ** 'p4 -ztag describe -S' would update the shelveAccess date even though the shelved content was not displayed. This has been fixed. #1583727 (Job #93160) ** 'p4 edit -t type' run against a file in a graph depot would not update the filetype in the committed tree object. This has been fixed. #1579211 (Job #92972) ** The help output of 'p4 help-graph opened' and 'p4 help-graph revert' now show graph depot-specific help for those commands (tech preview). Upgrade of OpenSSL to 1.0.2m Bugs fixed in 2017.2 #1577859 (Job #93001) ** 'p4 annotate -I' will no longer terminate abnormally if access to a branch is excluded within some integration histories. #1577673 (Job #92882) ** Archive file transfer failure from the Edge Server to the Commit Server during parallel submit could sometimes be undetected. If submit succeeded in this scenario, the archives would be missing on the Commit Server. This has been fixed to ensure that the command fails when the transfer fails. #1573540 (Job #92777, #92817) ** 'p4 reconcile -a' and 'p4 clean' would fail to detect files to add or clean if the command was invoked without arguments from a directory containing the '@' character. This has been fixed. #1572571 (Job #91927) ** A 'p4 have' without a valid login run through a routing Broker could receive a 'restricted to use' message or an 'invalid or unset' depending on which replica responded - now it always gets the 'invalid or unset' error. #1570784 (Job #92648) ** Logins forwarded through a broker to a replica could have the replica<->master connection left open if the client dropped at the wrong time. #1568172 (Job #91885) ** Submitting a moved 'utf8' file using a pre-15.2 client no longer results in a missing archive. #1567257 (Job #92360) ** Graph depot archive data must utilize server.depot.root configurable. Caveat: 17.1 -> 17.2 upgrade will require any graph depot archive data to be manually moved if server.depot.root had been set prior to the upgrade. #1561151 (Job #92417) ** A delay in the replication of a consistency point will no longer corrupt the journal written by a 'journalcopy' thread. #1558115 (Job #92327) ** A submit of a +Sn file will no longer cause a failure of a concurrent 'clone' or 'fetch' operation. #1529453 (Job #91971) ** Parallel sync performance has been improved for some scenarios in which distribution of load across the transmit threads was not an issue. #1526861 (Job #90476) ** 'p4 sync -r ' would error if the file was either the 'to' or 'from' half of a moved file. #1526302 (Job #90686) ** Increase receive buffer sizes for the Perforce API to 1 megabyte which shows substantial performance improvement for several wide area network operations and prevents network hangs in some cases. Old value was 32k. Can be adjusted with net.rcvbufsize #1526247 (Job #90798) ** 'p4 sync' against a repo (graph depot) would not honor the client option 'noclobber'. #1525293 (Job #90697) ** Parallel submit from an Edge Server could corrupt the archives of non-ktext files if they contain RCS keywords. This has been fixed. #1523244 (Job #89630) ** The 'net.parallel.sync.svrthreads' configurable reduces the number of parallel transmit threads used by sync commands when the total number of 'user-transmit' threads (from all commands) running concurrently in the server would exceed the value of this configurable. Server monitoring must be enabled for this new configurable to have any effect. #1521469 (Job #88774) ** Errors reported from 'p4 describe -I' and 'p4 change -I' from using unknown change identity values were confusing. These errors are now more specific and less confusing. #1519323 (Job #91682) ** Setting the 'track' configurable to a value of zero now correctly supresses reporting the tracking metrics for 'rdb.lbr' in the replica's server log. #1519279 (Job #91568) ** Tagged output for 'p4 shelve' and 'p4 submit' from an edge server didn't report the 'change' number when dm.shelve.promote=1 and security=3 are set on the edge server. This has been fixed. #1516923 (Job #91055) ** The 'annotate -I' command now correctly considers all the needed revisions of a depot file that is a "from" file into multiple branches as permitted by access through the integration history. #1506651 (Job #90330) ** 'p4 copy' could miss needed copies in a complex case of moves and earlier copies. -------------------------------------------------------------------------- Major new functionality in 2017.1 Graph Depot support ** A collection of new features provide direct support for git repositories and git workflows using the p4d server. In addition to the new server features (outlined below), there is a new server component, called the Connector, that is separately installable as needed, and provides services which are broadly similar to those provided by Perforce proxy and replica servers. The new features you should be aware of include: - server data model support - authentication and authorization enhancements - p4 command line access to git versioned files - new triggers To learn more about the Connector component, please read its release notes and documentation. Below is a broad overview of the new p4d support; for details, please read the server documentation. Server data model support: A single p4d server new supports storage of versioned files using either the classic Perforce data model, or using the git data model. The data model to use is specified on a depot-by-depot basis: a depot of type "graph" is used to store one or more git repositories. The server automatically creates a graph depot named 'repo'; you may create additional graph depots using the 'p4 depot' command. git repositories are named using a hierachical naming scheme of the format: //depot/repo/path/name, using the new 'p4 repo' command. Authentication and authorization enhancements: git users accessing the Perforce server must be properly authenticated and authorized. When using the HTTPS protocol, git users are prompted for their Perforce username and password as necessary when they perform clone, push, or pull commands. When using the SSH protocol, git users authenticate using public key encryption; the appropriate public key for each user should be recorded in the server using the new 'p4 pubkey' command. Access control for git repositories uses a new set of permissions, defined with the 'p4 grant-permission' command. The related revoke-permission, check-permission, and show-permission commands are also useful for defining and maintaining repository access control rules. Command line access to git versioned files: A client workspace can be configured to access git versioned files by mapping paths from repos within graph type depots; non-graph depot paths may also be mapped in the same client view. The 'p4 sync' command will then sync the specified version of the specified files from one or more git repositories and other depots to the corresponding location in your client's filesystem. Similarly the 'p4 have', 'p4 files', 'p4 dirs' and 'p4 fstat' commands will also report on the metadata from git repositories as well as other depots. Not all flags for these commands are applicable for graph. New triggers: Several new trigger types are available to allow administrators to define custom policies for access to git repository data, and to support advanced workflows such as initiating build/test automation activities upon the completion of a git push command. Licensing: The default maximum repos allowed for a server is 10, to increase this limit contact Perforce Sales at sales@perforce.com. (For more information see 'p4 help --depot-type=graph'). #1434004 * ** *** TCP connection changes to improve performance over long latency connections. Significantly more information may be in transport now and clients and intermediate processes need to handle more data in a timely manner. This new behavior can be disabled in clients, proxies, brokers and the server with the configurable net.autotune which defaults to 1 (enabled) and can be set to 0 to disable. Clients can set this via "p4 set" or P4CONFIG files and servers can set this via "p4 configure." On Windows based platforms, send buffer sizes are not autotuned but still are manually configurable with net.tcpsize. #1425396 (Job #88065) ** Binary fields in journal records will now be written in base64 instead of hex with a few exceptions. Binary objects of length 1 will still be written in hex and some md5 digest fields will still be hex. Minor new functionality in 2017.1 #1487961 (Job #90210) ** New server option '--daemonsafe' is like '-d' and forks the 'p4d' into the background, but also closes the stdio files. #1486890 (Job #88954) ** The utf8 file type was not handled properly by clients older than 2015.2 and the p4 java api. The server now attempts to work with these older clients by handling the byte-order-mark in the server and having the server produce digests which these older clients will expect. Operation with utf8 files and these old client will skip proxy caching also. These older clients and utf8 filetype will assume the BOM is present while clients 2015.2 can adapt to a BOM being present or not. #1459677 (Job #89065) ** The 'p4 verify -v' command now supports updates to files which have been branched into one or more active task streams. Please see 'p4 help verify' for more details about this scenario. #1458367 (Job #37069, #89070) ** The 'p4 move -r' command allows users to rename or change the location of files in the depot without opening them for edit first. #1457332 (Job #89008) ** The 'p4 remotes' command now accepts the '-u user' flag. #1453638 (Job #84442) ** The --remote-user flag may be specified on the fetch, push, and login commands, overriding the RemoteUser field in the remote spec for this command. #1450711 (Job #88643) ** A restriction on using the 'p4 renameuser' command in a Commit-Edge configuration has been removed: it is now safe to use the command to rename a user who owns workspaces and/or labels on one or more Edge Servers. Note that unloaded workspaces are still not processed by the command, no matter which server those workspaces reside on. #1448666 (Job #63670) ** A new type of structured server log audit record format which includes the revision's size in bytes is now available. To specify the logging of these alternate audit records, change the name of your audit log from 'audit.csv' to 'auditsize.csv'. #1442507 (Job #69777) ** Two new security levels have been introduced to enforce stricter intermediary checking. Setting the security configurable to 5 to higher will require each intermediary to have a valid authenticated service user. Setting the security configurable to 6 to higher will require each intermediary to have a valid server spec, where the service user must match the user named in the spec's 'User' field. The server spec will be found by matching the intermediary's P4PORT with a value in the spec's 'AllowedAddresses' field. For example, if connecting to a proxy on 10.0.0.100:1667, a server spec with this IP address and port number in the 'AllowedAddresses' field must exist and must have the proxy's service user named in the 'User' field. Errors relating to configuration of intermediaries will be logged to the 'route.csv' logfile, if enabled. #1439069 (Job #81269) ** When specifying file paths you can now use the change identity from the submitted change spec instead of the actual change number. So, for example given a change submitted with an identity: 'p4 sync //depot/...@30E7C829-08C504-4109-89AA-904D0C2194B8' #1424268 (Job #88017) ** The template.label configurable introduced by change 656580 now also applies to a label created via the 'p4 tag' command. #1526517 (Job #90686) ** Increase receive buffer sizes for the Perforce API to 1 megabyte which shows substantial performance improvement for several wide area network operations and prevents network hangs in some cases. Old value was 32k. Can be adjusted with net.rcvbufsize -------------------------------------------------------------------------- Bugs fixed in 2017.1 Patch 9 #1737215 (Job #97134) ** Group protections entries containing wildcards in the group name could cause a server crash. This has been fixed. #1728560 (Job #96662) ** Parallel submit could fail to transfer archive content if the file transfer threads exit without error. This has been fixed by insuring that archives exist on the server before the submit continues and reports success. #1709207 (Job #96381) ** The 'p4 journals' command when run during a checkpoint operation could hang the server. This has been fixed. #1703333 (Job #92403, #95219) ** 'p4 revert -C client' would fail to revert files in the target workspace if that workspace was locked or specified a host other than the one the command was run from. This has been fixed. #1692127 (Job #96155) ** Improve the performance of group protections. Bugs fixed in 2017.1 Patch 8 #1675009 (Job #94847) ** The filesys.checklinks configurable will may now be set to '4', providing the same checking as '3' but disallows using '-f' to override the check. #1647697 (Job #94951) ** Use of auto-reloaded labels no longer allocates and holds onto memory for the label on every use. It now uses memory proportional to the size of the label used. #1640812 (Job #94621) ** The 'rejectList' feature will no longer block replicas. #1672646 (Job #94877) *** Fix new proxytotals reporting accuracy. #1653549 (Job #95033) ** A scheduled checkpoint on a 'standby' or 'forwarding-standby' server executed when the master server's journal is rotated no longer corrupts the prior journalcopy'd journal. #1648718 (Job #94825) ** 'p4 fstat' using a revision specification on an opened file would hang if the file had ditto mapping. This has been fixed. #1646835 (Job #94877) *** Additional logging is now reported by the proxy when track=1 is set. The new proxytotals line records the number of files and the total file size (in MB) transferred to the client from the upstream server and from the proxy's cache. Bugs fixed in 2017.1 Patch 7 #1620424 (Job #90502) ** 'p4 resolve' in a federated environment could leave orphaned locks after a filetype resolve that changed files from '+l' to filetypes without '+l'. This has been fixed. #1618405 (Job #94152) ** Concurrent label create/delete of the same label no longer hangs. #1616222 (Job #94116) ** 'p4 shelve -d' without any file arguments leaks memory. This change fixes the issue. #1611639 (Job #92645) ** Parallel sync performance through the proxy has been improved for some scenarios. #1609812 (Job #93973) ** 'p4 ldapsync -u' would only delete users if a spec depot were present. This has been fixed. #1609801 (Job #93947) ** A shelve delete trigger does not fire if the file is specifed in the command and does not exist in the changelist. This has been fixed. #1609779 (Job #93871) ** 'p4 where' run against replica using a partitioned or readonly client could suppress output from additional commands run within the same connection. #1603813 (Job #93716) ** The revert of open files during a 'client -d -f' command are now batched into fewer larger transactions, resulting in more efficient replication of this command. Bugs fixed in 2017.1 Patch 6 Upgrade of OpenSSL to 1.0.2n Bugs fixed in 2017.1 Patch 5 #1589832 (Job #92849) ** 'p4 rec -a ...' or 'p4 add ...' could cause the client to crash when invoked from the client root and the root directory name has an excessive number of ellipses. This has been fixed. #1588218 (Job #92882) ** Archive file transfer failure from the Edge Server to the Commit Server during parallel submit could sometimes be undetected. If submit succeeded in this scenario, the archives would be missing from the Commit Server. This has been fixed to insure that the command fails when the transfer fails. #1586874 (Job #93136) ** LDAP based user auto-creation, run against a replica not using 'rpl.forward.login', would only create the user on the replica (not on the master). This has been fixed. #1584718 (Job #92894) ** 'p4 -ztag describe -S' would update the shelveAccess date even though the shelved content was not displayed. This has has been fixed. #1577292 (Job #93001) ** 'p4 annotate -I' will no longer terminate abnormally if access to a branch is excluded within some integration histories. #1576900 (Job #92777, #92817) ** 'p4 reconcile -a' and 'p4 clean' would fail to detect files to add or clean if the command was invoked without arguments from a dictionary containing the '@' character. This has been fixed. Upgrade of OpenSSL to 1.0.2m Bugs fixed in 2017.1 Patch 4 #1569495 (Job #92417) ** A delay in the replication of a consistency point will no longer corrupt the journal written by a 'journalcopy' thread. #1566131 (Job #91885) ** Submitting a moved 'utf8' file using a pre-15.2 client no longer results in a missing archive. #1564066 (Job #92442) ** 'p4 resolve' now has an undoc flag '-dx' which can be used to make the 3-way merge algorithm perform more like the unix 'diff3 -m' merge. Typically merge tends to remove duplicate lines in adjacent inserts from 'theirs' and 'yours', with this flag all the lines in the inserts from both legs of the merge will be inserted. Bugs fixed in 2017.1 Patch 3 #1550695 (Job #92435) ** User not able to submit an open stream with a file change on a edge server. This is now fixed. #1549763 (Job #92443) ** Users auto-created by 'p4 login' would not have the Update time set in the user spec. This has now been fixed. Bugs fixed in 2017.1 Patch 2 #1539093 (Job #92168) ** *** The new performance improvements for TCP over long latency connections could cause write/write deadlocks in proxies and brokers. To mitigate this, the default behavior has been changed to disabled. It can be re-enabled by setting 'net.autotune' to 1. Once enabled, it will work for any server configuration that does not have a proxy or a broker in the mix. #1542613 (Job #92377) ** Empty repos in graph depot could cause reference erors to be shown when running commands like 'p4 dirs' against unrelated paths. This has been fixed. Bugs fixed in 2017.1 Patch 1 #1529412 (Job #91971) ** Parallel sync performance has been improved for some scenarios in which distribution of load across the transmit threads was not an issue. #1528637 (Job #85788) ** 'p4 revert -C client ' fails to revert moved files. #1525095, #1524788, #1524323, #1523395 (Job #91812) Graph depot triggers are not honoring trigger Path field for repo submit. #1519789, #1518201 (Job #91541) 'p4 submit' must activate graph-push-* triggers. #1519789, #1519676 (Job #91644) Mirrored repo should only be able to run post-commit triggers. #1516824 (Job #91055) ** The 'annotate -I' command now correctly considers all the needed revisions of a depot file that is a "from" file into multiple branches as permitted by access through the integration history. #1516465 (Job #90653) * ** Application locked licenses now work with DVCS. #1516413 (Job #91562) ** 'p4 repos -M' could report incorrect number of mirrored repos. #1514865 (Job #90330) ** 'p4 copy' could miss needed copies in a complex case of moves and earlier copies. Upgrade of OpenSSL libraries to 1.0.2l Bugs fixed in 2017.1 #1505154 (Job #90088) ** For a specific use case, a branch resolve is scheduled instead of a move resolve. This is fixed by backing out change #1422325. #1502778 (Job #89674) ** Obliterating files from a task stream that is no longer protected because it has been unloaded can cause revision inconsistency after being reloaded. #1498792 (Job #86088) ** Using 'p4 switch' between task streams and non-task can fail if a previous manual switch was done with 'p4 client -s' without subsequently calling 'p4 sync'. #1489051 (Job #2170) ** Submitting a file with the same name as an existing depot directory path (or vice versa) will now be rejected. #1483947 (Job #89040) * 'p4 print -o ' will now work even if a P4CLIENTPATH is set or the DVCS P4INITROOT is set. This is a new exception to the P4CLIENTPATH feature. #1481077, #1481305, #1483342 (Job #89051, #90160) * ** *** SSL connections now allow use of TLSv1.1 and TLSv1.2 in addition to the existing support for TLSv1.0. Clients and servers will choose the highest TLS version supported by both ends of the connection; thus old clients and old servers will always use TLSv1.0, and by default new clients connecting to new servers will use TLSv1.2. Two new configurables are provided to restrict the allowed TLS versions when a new client connnects to a new server: ssl.tls.version.min [default=10] ssl.tls.version.max [default=12] These default settings allow TLSv1.0, TLSv1.1, and TLSv1.2. Each of these configurables can take one of the following values: 10 specifies TLSv1.0 11 specifies TLSv1.1 12 specifies TLSv1.2 ssl.tls.version.min specifies the lowest TLS version that will be accepted, and ssl.tls.version.max specifies the highest TLS version that will be accepted. Changes to these configurables on a server will not take effect until the server is restarted. Thus, to force use of a new client, the server can set ssl.tls.version.min=11 (or 12) because old clients support only TLSv1.0. To force the use of TLSv1.1, set ssl.tls.version.min=11 ssl.tls.version.max=11 To force the use of TLSv1.2, set ssl.tls.version.min=12 ssl.tls.version.max=12 To allow TLSv1.1 or TLSv1.2 but exclude TLSv1.0, set ssl.tls.version.min=11 ssl.tls.version.max=12 These configurables are designed to allow the server to restrict the set of allowed TLS protocol versions, but they can be used by clients as well; this is probably useful mostly for testing, although it can be use to prevent connecting to potentially vulnerable servers. When used by a client these configurables specify the lowest and highest TLS versions that will be offered. Values of either configurable outside of the legal range will be treated as if they were pinned to the nearest end of the range. Thus values below 10 will be treated as 10; values above 12 will be treated as 12. Be careful not to set ssl.tls.version.min > ssl.tls.version.max because then no clients will be able to connect. In this case you will need to change these settings on the command line, e.g.: p4d -c"set ssl.tls.version.min=10" p4d -c"set ssl.tls.version.max=12" and then restart the server. Note that if there are no allowed TLS versions common to the client and the server, or if the server is not using SSL, then the client will get an error similar to this: Perforce client error: SSL connect to ssl:host:1666 failed (Connection reset by peer). Remove SSL protocol prefix from P4PORT or fix the TLS settings. If the client or server does not offer any protocol versions (eg, because the client set ssl.tls.version.min > ssl.tls.version.max) then the client will get an error similar to this: Perforce client error: SSL protocol: error:14077102:SSL routines: SSL23_GET_SERVER_HELLO:unsupported protocol: There are only two lines in this error message; the actual error has the "SSL protocol:" line and the "GET_SERVER_HELLO" line on a single line, but they are split here for readability. #1480537 ** 'p4 protects -m' could incorrectly report a max permission of 'owner' (owner is not an access permission). #1480400 (Job #89648, #89890) ** The db.sendq entries for a failed parallel sync are now immediately removed from db.sendq. #1479216 (Job #89781) ** 'p4 depot -f' would allow changing the depot type of a depot that is not empty. This has been fixed. #1475982 (Job #89723) ** The rpl >= 2 condition for reporting replication tracking metrics has been removed. The replication tracking metrics will now be reported when the applicable tracking thresholds have been exceeded. #1473097 (Job #89657) ** 'p4d -xx' could incorrectly declare "db.workingx/db.revsh inconsistencies found," and incorrectly generate jnl.fix records, in some situations where multiple shelves existed for the same files. #1471650 (Job #89336) ** 'p4 add ...' could generate many "Error object passed to database" errors and fail to terminate when MaxScanRows or MaxLockTime has been reached. This could also happen with 'p4 reconcile' or 'p4 status'. This behavior has been fixed. #1469144 (Job #89527) ** A 'p4 shelve' command which needed to retry its change spec edit operation due to a spec validation error no longer fails with "No files to shelve." #1467328 (Job #87271) ** 'p4 clients -S //stream/name' now respects the case-sensitivity configuration of the server. #1466515 (Job #81281) ** Replica pull threads which receive error messages from their master server will now log those error messages into any replica structured server logs which record error events. #1465792 (Job #16821, #89204) * ** The configurable 'filesys.checklinks' may fail to prevent files from being added when files are symlinks to directories. This has been fixed. Also, this configurable is now honored for 'p4 reconcile' when detecting files to be added. #1464985 (Job #89311) ** The fetch/push/unzip commands might incorrectly declare a file conflict for a file which was moved multiple times, to different destinations, during its history. #1463567 (Job #86424) ** Edge Servers might halt replicating if an obliterate command was run concurrently with a very large populate or submit command. #1460946 (Job #88999) ** The 'p4 export' command now includes any @dl@ or @pk@ journal records as part of the journal data export. #1458557 (Job #89052) ** A forwarding replica with lbr.replication=shared will no longer attempt to update the (shared) archive area during the file transfer phase of a forwarded 'p4 submit'. The cache-on-submit behavior is still present for forwarding replicas with lbr.replication set to either readonly or cache. #1455848 (Job #88980) ** In replica chaining configurations, replicas which were not directly connected to the master server were not processing archive deletion operations arising from operations such as submission of a binary+S file, deletion of a shelf, obliteration, archive depot operations or retype +l commands. #1449343 (Job #85596) ** The 'logparse' command no longer attempts to open an erroneous file when the structured log's configurable includes a path. #1447186 (Job #84067) ** The number of fsync() calls for 'rdb.lbr' executed by a replica server fetching graph depot packfiles has been reduced. In some environments, this can improve the performance of fetching graph depot packfiles. #1446257 (Job #84067) ** The number of fsync() calls for 'rdb.lbr' executed by a replica server fetching file content on demand has been reduced. In some environments, this can improve the performance of fetching file content on demand. #1445640 (Job #88728) ** The configurables rpl.awaitjnl.count and rpl.awaitjnl.interval were inadvertently swapped; they are now corrected. #1440527 (Job #88441) ** 'p4 verify -S //filepath/...@=' would scan the db.revsh table. #1439920 (Job #88350) ** If an error was encountered when opening an archive file for write on the commit server during an edge submit, the commit server might crash. The edge submit now reports the error encountered and fails gracefully. #1432576 (Job #88205) ** The 'rdb.lbr' tracking metrics are now aggregated to reflect larger operations. Since the aggregated metrics might now more readily exceed a tracking threshold, the 'rdb.lbr' tracking output might be more likely to be written to the server log when the 'rpl' configurable is set to a value of two or greater. #1431630 (Job #88189) ** The 'rdb.lbr' tracking metrics are now correctly reported for the edge server's metadata pull thread when the 'rpl' configurable is set to a value of two or greater. #1425567 (Job #88085) ** The number of fsync() calls for 'rdb.lbr' executed by the commit server for coordinating the file content fetched during a parallel submit though an edge server has been reduced. In some environments, this can improve the performance of parallel submit through an edge server. #1424177 (Job #26502, #51997, #59889, #69919, #88018) ** The server now rejects client and branch views that end with "...." on one side and "..." on the other. #1419208 (Job #67640) ** A 'p4 sync' command issued to a forwarding replica of a forwarding replica will now deliver file content from the outermost forwarding replica in the chain, rather than the innermost. However, it is now illegal to deploy a proxy to a forwarding replica. If you had such a deployment, you will need to either (a) reconfigure that proxy to point directly to the master, (b) replace that proxy with a forwarding replica, or (c) remove that proxy entirely. -------------------------------------------------------------------------- Major new functionality in 2016.2 #1414787 (Job #1649) ** A 'p4 undo' command has been added to simplify the process of backing out submitted changes. See 'p4 help undo'. #1379442 (Job #2103, #27421, #75239) ** The protections table now supports delegation of control for a specific path to a user or group. A new 'owner' permission has been added which gives users the ability edit a sub-protections table by running 'p4 protect' with the subpath: the path that is granted by the 'owner' protections entry. This will open a protect spec similar to the normal protections table, but will only allow permission levels up to 'admin' to be granted for paths within the scope of the subpath. The sub-protections table will not be shown in the main protections table: the entries in the sub-protections table will be inserted immediately after the 'owner' entry: as such only one 'owner' entry is permitted per subpath. Multiple owners for a sub-protections table can be achieved by with a group. Users with 'super' permission can edit any sub-protections table without needing to be an 'owner'. Minor new functionality in 2016.2 #1442162 (Job #16821, #88295) * ** A new configurable 'filesys.checklinks' can be used to prevent files being added that have a symlink in their directory path. When this configurable is set to '1', trying to 'p4 add' a file that is symbolically linked below the client root will fail. Setting this configurable to '2' allows the user to bypass the check by using the '-f' (force) option. #1426811 (Job #88088) ** Reverse integration credits will no longer be downgraded by submit due to the presence of multiple 'merge from' records if the merges were from other revisions of the same file. #1416336 (Job #76601, #79465) ** 'p4 ldapsync' has a new '-u' flag that allows users to be created, updated and/or deleted based on users found in LDAP servers. #1408304 ** 'p4 copy -f' and 'p4 populate -f' will no longer copy 'move/delete' source revisions into nonexistent targets as new 'delete' revisions. #1401167 (Job #86401) ** Setting the new 'server.locks.global' configurable to 1 makes 'p4 lock' from an Edge Server take global locks on the Commit Server. #1389236 (Job #81369) ** A new 'partitioned' client type has been added. Like the 'readonly' type clients of this type have their own db.have tables that aren't journalled; however, these clients do allow files to be opened and submitted. Existing 'readonly' clients can be convtered to 'partitioned' by updating the 'Type' field. #1362620 ** 'p4 client' now sports a '--type' (-T) flag that allows the user to specify the type of the client to create. The type can be 'writeable', 'readonly', or 'partitioned'. #1351238 *** When using 'proxy.monitor.level' and tracking is enabled in the proxy, the tracking metrics for the 'pdb.monitor' table are reported when they are above the thresholds defined for the tracking level specified. Bugs fixed in 2016.2 Patch 15 #1737232 (Job #97134) ** Group protections entries containing wildcards in the group name could cause a server crash. This has been fixed. #1703330 (Job #92403, #95219) ** 'p4 revert -C client' would fail to revert files in the target workspace if that workspace was locked or specified a host other than the one the command was run from. This has been fixed. Bugs fixed in 2016.2 Patch 14 #1692106 (Job #96155) ** Improve the performance of group protections. Bugs fixed in 2016.2 Patch 13 #1653426 (Job #95033) ** A scheduled checkpoint on a 'standby' or 'forwarding-standby' server executed when the master server's journal is rotated no longer corrupts the prior journalcopy'd journal. #1649639 (Job #94825) ** 'p4 fstat' using a revision specification on an opened file would hang if the file had ditto mapping. This has been fixed. Bugs fixed in 2016.2 Patch 12 #1647697 (Job #94951) ** Referencing autoreloaded labels uses much less memory. #1640812 (Job #94621) ** Certain server rejectList settings will no longer block replication. Bugs fixed in 2016.2 Patch 11 #1620427 (Job #90502) ** 'p4 resolve' in a federated environment could leave orphaned locks after a filetype resolve that changed files from '+l' to filetypes without '+l'. This has been fixed. #1618408 (Job #94152) ** Concurrent label create/delete of the same label no longer hangs. #1616854 (Job #94116) ** 'p4 shelve -d' without any file arguments leaks memory. This change fixes the issue. Bugs fixed in 2016.2 Patch 10 #1609799 (Job #93947) ** A shelve delete trigger does not fire if the file is specifed in the command and does not exist in the changelist. This has been fixed. #1609792 (Job #93973) ** 'p4 ldapsync -u' would only delete users if a spec depot were present. This has been fixed. #1609778 (Job #93871) ** 'p4 where' run against replica using a partitioned or readonly client could suppress output from additional commands run within the same connection. #1602887 (Job #92645) ** Parallel sync performance through the proxy has been improved for some scenarios. Bugs fixed in 2016.2 Patch 9 #1602713 (Job #93716) ** The revert of open files during a 'client -d -f' command are now batched into fewer larger transactions, resulting in more efficient replication of this command. Bugs fixed in 2016.2 Patch 8 #1595398 (Job #92882) ** Archive file transfer failure from the Edge Server to the Commit Server during parallel submit could sometimes be undetected. If submit succeeded in this scenario, the archives would be missing from the Commit Server. This has been fixed to insure that the command fails when the transfer fails. #1586878 (Job #93136) ** LDAP based user auto-creation, run against a replica not using 'rpl.forward.login', would only create the user on the replica (not on the master). This has been fixed. #1584627 (Job #92894) 'p4 -ztag describe -S' would update the shelveAccess date even though the shelved content was not displayed. This has has been fixed. Upgrade of OpenSSL libraries to 1.0.2n Bugs fixed in 2016.2 Patch 7 #1565967 (Job #91885) ** Submitting a moved 'utf8' file using a pre-15.2 client no longer results in a missing archive. #1564021 (Job #92442) ** 'p4 resolve' now has an undoc flag '-dx' which can be used to make the 3-way merge algorithm perform more like the unix 'diff3 -m' merge. Typically merge tends to remove duplicate lines in adjacent inserts from 'theirs' and 'yours', with this flag all the lines in the inserts from both legs of the merge will be inserted. #1550657 (Job #92435) ** User not able to submit an open stream with a file change on a edge server. This is now fixed. #1549763 (Job #92443) ** Users auto-created by 'p4 login' would not have the Update time set in the user spec. This has now been fixed. Bugs fixed in 2016.2 Patch 6 #1529352 (Job #91971) ** Parallel sync performance has been improved for some scenarios in which distribution of load across the transmit threads was not an issue. #1528570 (Job #85788) ** 'p4 revert -C client ' fails to revert moved files. Bugs fixed in 2016.2 Patch 5 #1514970 (Job #90330) ** 'p4 copy' could miss needed copies in a complex case of moves and earlier copies. #1513104 (Job #88954) ** The utf8 file type was not handled properly by clients older than 2015.2 and the p4 java api. The server now attempts to work with these older clients by handling the byte-order-mark in the server and having the server produce digests which these older clients will expect. Operation with utf8 files and these older clients will skip proxy caching also. These older clients assume the BOM is present for the utf8 filetype, while 2015.2 and later clients can adapt to a BOM being present or not. Upgrade of OpenSSL libraries to 1.0.2l Bugs fixed in 2016.2 Patch 4 #1506799 (Job #90653) * ** Application locked licenses now work with DVCS. Bugs fixed in 2016.2 Patch 3 #1497233 (Job #90088) ** For a specific use case, a branch resolve is scheduled instead of a move resolve. This is fixed by backing out change #1422325. #1495504 (Job #90632) ** Issuing a 'p4 fetch' that pulls archive content from a remote server with 'lbr.autocompress' enabled can corrupt a local ktext file if the revision librarian type is mismatched. Bugs fixed in 2016.2 Patch 2 #1484083 (Job #89648, #89890) ** The db.sendq entries for a failed parallel sync are now immediately removed from db.sendq. #1483314 (Job #89040) * 'p4 print -o ' will now work even if a P4CLIENTPATH is set or the DVCS P4INITROOT is set. This is a new exception to the P4CLIENTPATH feature. #1481077, #1481305, #1483342 (Job #89051, #90160) * ** *** SSL connections now allow use of TLSv1.1 and TLSv1.2 in addition to the existing support for TLSv1.0. Clients and servers will choose the highest TLS version supported by both ends of the connection; thus old clients and old servers will always use TLSv1.0, and by default new clients connecting to new servers will use TLSv1.2. Two new configurables are provided to restrict the allowed TLS versions when a new client connnects to a new server: ssl.tls.version.min [default=10] ssl.tls.version.max [default=12] These default settings allow TLSv1.0, TLSv1.1, and TLSv1.2. Each of these configurables can take one of the following values: 10 specifies TLSv1.0 11 specifies TLSv1.1 12 specifies TLSv1.2 ssl.tls.version.min specifies the lowest TLS version that will be accepted, and ssl.tls.version.max specifies the highest TLS version that will be accepted. Changes to these configurables on a server will not take effect until the server is restarted. Thus, to force use of a new client, the server can set ssl.tls.version.min=11 (or 12) because old clients support only TLSv1.0. To force the use of TLSv1.1, set ssl.tls.version.min=11 ssl.tls.version.max=11 To force the use of TLSv1.2, set ssl.tls.version.min=12 ssl.tls.version.max=12 To allow TLSv1.1 or TLSv1.2 but exclude TLSv1.0, set ssl.tls.version.min=11 ssl.tls.version.max=12 These configurables are designed to allow the server to restrict the set of allowed TLS protocol versions, but they can be used by clients as well; this is probably useful mostly for testing, although it can be use to prevent connecting to potentially vulnerable servers. When used by a client these configurables specify the lowest and highest TLS versions that will be offered. Values of either configurable outside of the legal range will be treated as if they were pinned to the nearest end of the range. Thus values below 10 will be treated as 10; values above 12 will be treated as 12. Be careful not to set ssl.tls.version.min > ssl.tls.version.max because then no clients will be able to connect. In this case you will need to change these settings on the command line, e.g.: p4d -c"set ssl.tls.version.min=10" p4d -c"set ssl.tls.version.max=12" and then restart the server. Note that if there are no allowed TLS versions common to the client and the server, or if the server is not using SSL, then the client will get an error similar to this: Perforce client error: SSL connect to ssl:host:1666 failed (Connection reset by peer). Remove SSL protocol prefix from P4PORT or fix the TLS settings. If the client or server does not offer any protocol versions (eg, because the client set ssl.tls.version.min > ssl.tls.version.max) then the client will get an error similar to this: Perforce client error: SSL protocol: error:14077102:SSL routines: SSL23_GET_SERVER_HELLO:unsupported protocol: There are only two lines in this error message; the actual error has the "SSL protocol:" line and the "GET_SERVER_HELLO" line on a single line, but they are split here for readability. #1478875 (Job #89781) ** 'p4 depot -f' would allow changing the depot type of a depot that is not empty. This has been fixed. #1474602 (Job #89677) ** 'p4 admin stop/restart' could cause a server crash if the new configurable 'db.monitor.interval' had been set. #1473213 (Job #89657) ** 'p4d -xx' could incorrectly declare "db.workingx/db.revsh inconsistencies found," and incorrectly generate jnl.fix records, in some situations where multiple shelves existed for the same files. #1471463 (Job #89336) ** 'p4 add ...' could generate many "Error object passed to database" errors and fail to terminate when MaxScanRows or MaxLockTime has been reached. This could also happen with 'p4 reconcile' or 'p4 status'. This behavior has been fixed. Bugs fixed in 2016.2 Patch 1 #1466749 (Job #89372) ** The fix for Job #88792 has caused a regression with changeview entries in client syntax when ditto mappings are not present in the client map. This has been fixed. #1465599 (Job #16821, #89204) * ** The configurable 'filesys.checklinks' may fail to prevent files from being added when files are symlinks to directories. This has been fixed. Also, this configurable is now honored for 'p4 reconcile' when detecting files to be added. #1465071 (Job #89311) ** The fetch/push/unzip commands might incorrectly declare a file conflict for a file which was moved multiple times, to different destinations, during its history. #1463745 (Job #86424) ** Edge Servers might halt replicating if an obliterate command was run concurrently with a very large populate or submit command. #1458845 (Job #89052) ** A forwarding replica with lbr.replication=shared will no longer attempt to update the (shared) archive area during the file transfer phase of a forwarded 'p4 submit'. The cache-on-submit behavior is still present for forwarding replicas with lbr.replication set to either readonly or cache. #1424575 (Job #87152) A new tool has been created to aid in converting a server instance to Unicode mode. Please contact Support for information and availability of jnltool.pl. Bugs fixed in 2016.2 #1455848 (Job #88980) ** In replica chaining configurations, replicas which were not directly connected to the master server were not processing archive deletion operations arising from operations such as submission of a binary+S file, deletion of a shelf, obliteration, archive depot operations or retype +l commands. #1454129 (Job #81273) ** The diskspace command now supports long filenames on Windows. #1449303 (Job #85596) ** The 'logparse' command no longer attempts to open an erroneous file when the structured log's configurable includes a path. #1445625 (Job #88728) ** The configurables rpl.awaitjnl.count and rpl.awaitjnl.interval were inadvertently swapped; they are now corrected. #1439865 (Job #88350) ** If an error was encountered when opening an archive file for write on the commit server during an edge submit, the commit server might crash. The edge submit now reports the error encountered and fails gracefully. #1432514 (Job #85257) ** 'p4 server -c' prevented users from setting arbitrary configuration values which were not specific to the server's type. Now any valid configuration commands are supported. #1432475 (Job #88205) ** The 'rdb.lbr' tracking metrics are now aggregated to reflect larger operations. Since the aggregated metrics might now more readily exceed a tracking threshold, the 'rdb.lbr' tracking output might be more likely to be written to the server log when the 'rpl' configurable is set to a value of two or greater. #1432037 (Job #78055) ** A delete of a stream containing associated unloaded clients was not checking for these unloaded clients before completion. This operation should be blocked with unloaded clients. #1431589 (Job #88189) ** The 'rdb.lbr' tracking metrics are now correctly reported for the edge server's metadata pull thread when the 'rpl' configurable is set to a value of two or greater. #1425966 (Job #88072) ** 'p4 sync' was not scheduling resolves correctly when a file was open for move/add over an existing deleted file. Fixed. #1425400 (Job #88085) ** The number of fsync() calls for 'rdb.lbr' executed by the commit server for coordinating the file content fetched during a parallel submit though an edge server has been reduced. In some environments, this can improve the performance of parallel submit through an edge server. #1423738 (Job #87945) ** Correct Abort Retry Ignore message from 3rd party memory manager on the Linux platform. #1424102 (Job #84137) ** The 'serverlog.file.N' configurable no longer allows invalid filenames to be set. #1422877 (Job #85923) * ** 'p4 submit -f reopen' could leave files readonly even when they have been successfully submitted and reopened. This has been fixed. #1422726 (Job #87949) ** Fixed the rev range recorded when running "p4 populate" with a revision specifier. #1422325 (Job #87928) ** Fixed a special case where a deleted file produced an unnecesary conflict on merge. #1418462 (Job #84067) ** The number of fsync() calls for 'rdb.lbr' has been reduced for the most common replication behaviors, such as a replica's metadata and archive pull threads. In some environments, this can improve replication performance for some operations. #1417585 (Job #87802) ** The very first 'fetch -t' command issued against a server will auto-create the 'tangent' depot in that server. Subsequent commands issued by that same network session would get errors if they referred to the tangent depot. #1414436 (Job #87083) ** If the domain record for a client exists on a commit server but not on the edge server (probably due to a network problem), this change now makes it possible to delete or reuse the client namespace from the original edge server that first created it. #1412767 (Job #87638) * The 'p4 init' command would write a small number of journal records to the end of the file specified by P4JOURNAL, if set. The local server initialization is now performed with -J off. #1411325 (Job #81360) ** A 'p4 fetch' command which transferred both a text (RCS) file whose archive was already present in the destination server and a lazy copy of that file, would leave the lazy copy corrupt. 'p4 verify' would report 'MISSING!' and requests for the file's content would report 'RCS checkout failed!'. #1410971 (Job #87181) ** Correct the digest used to ensure that content is transferred correctly to commands within triggers (such as a 'change-content' trigger) when submitting a shelf. A shelf is implicitly submitted to the commit server when a submit is run on an edge server. #1408027 (Job #87115) ** Deleting a client from an edge server when the commit server is down would lead to inconsistencies between the servers. #1407749 (Job #87327) ** Deleting a pending change with an Identity, or deleting an empty committed change with an Identity, incorrectly failed to delete the database record in the db.changeidx table. #1406560 (Job #72500) ** 'p4 describe' will now correctly display the working revision, rather than the have revision, for shelved files. #1406440 (Job #71311) ** 'p4 revert' in a federated environment could leave orphaned locks after a filetype resolve that changed files from '+l' to filetypes without '+l'. This has been fixed. #1406332 (Job #81024) ** 'p4 unload -o' of a client that gets interrupted could cause a server crash. #1404063 (Job #78359) * Parallel submit used with the '-s' client flag now includes status output for all errors. #1401397 (Job #86837) * ** 'p4 submit -f revertunchanged' will now revert the timestamp along with the local file permissions if the modtime option is enabled. Caveat: this may not work when submitting via an edge server. #1398598 (Job #86401) ** 'p4 lock -g' no longer requires '-c ', and now allows file arguments. #1397598 (Job #86850) ** It is no longer legal to define a depot named "..". #1397137 (Job #86855) ** Multi-threaded applications using the same connection could disrupt the flow control of long running commands like submit. This change prevents the server from executing any more callbacks as soon as the problem is detected. #1393673 (Job #83614, #84042) * The utf8 file type detection has changed. Now a file must have a utf8 byte order mark (BOM) to be detected as a utf8 file type even for unicode mode servers. Also, there are new undocumented client side configurations which can change utf8 file type behavior. #1393599 (Job #85393) ** 'p4 populate' ignored the defaultChangeType configuration setting. This has been fixed. #1391406 (Job #86555) ** 'p4 clean' was allowed on an edge server using a client not bound to that edge server. This has been fixed. #1390168 (Job #86435) ** 'p4 server -c' would populate the DistributedConfig field with optional settings when the command had run before and had set non-optional configuration values already. This has been fixed. #1390030 (Job #79678) ** If the 'StreamAtChange' field in the Client spec was specified before the 'Stream' field, it would be ignored. This has been fixed. #1388564 (Job #86608) * A command-line alias may now use 'p4subst' to replace a pattern with the empty string (""). #1387597 (Job #86513) * Defining a command-line alias for a tagged-mode command fails with the error "command did not return a spec." #1384469 (Job #86476) ** Certain formats of structured integrity logs could cause a crash. #1384202 (Job #86041) ** Change handling of utf8 server type files when working with clients <= 2015.1. For these clients, the utf8 type files are treated as server type text, so as to avoid any additional line-ending. These files will not have associated BOMs (Byte order marks) when they are synced in this case. This has no bearing with clients >= 2015.2. #1382996 (Job #74886, #86396) ** 'p4 clean' would fail to sync files when needed when they are exclusively opened by another client. This has been fixed. #1381955 (Job #84426) ** 'p4 submit' from an edge server using 'revertunchanged' could leave orphaned exclusive locks if all files in the change were reverted and some were exclusively locked. This has been fixed. #1380083 (Job #86262) ** Improve performance around structured logs. Log writers will now only acquire a shared lock on the 'logrotate' server meta lock when there are actually writes to the structured logs. #1380037 (Job #85991) ** Report to stderr (except on Windows), and syslog or the event log (as supported by the platform), any errors encountered when writing to the server log or a structured log. #1378294 (Job #86222) ** Following a 'fetch -t' command, the 'resubmit' command must be used, with the '-R' flag to resume after any merge conflicts are resolved, to coordinate the resubmit of the tangented changes. The 'submit' command now checks for an accidental attempt to submit a change that should have been run as 'resubmit -R', and issues a message rather than allowing the submit. #1376147 (Job #86129) * Using a command-line alias for a 'p4 annotate' command displayed extra blank lines in the output. #1369654 (Job #85547) * ** Fixed a bug where a "resolve -am" resulting in a lazy copy would not set the modtime correctly on the workspace file. #1368672 (Job #85680) ** Improve concurrency around structured logs. Log writers will now acquire a shared lock instead of an exclusive lock on the 'logrotate' server meta lock to block log rotations. #1367706 (Job #85767) ** The push/fetch/zip commands no longer allow an execution which would export half of a move operation (a move/delete without the corresponding move/add, or vice versa). To export the affected changelist, either widen the DepotMap field in the remote spec to include both sides of the move, or narrow the map to exclude both sides of the move. #1364433 (Job #75866) ** Change 996993 is reverted, as the performance impact was large. #1364284 (Job #85659) ** When integrating into a renamed file, the rename is disregarded if it appears to lead outside of the target branch, based on the broader branch mapping that can be inferred from the source and target file. #1355889 (Job #85346) ** Fixed a memory leak in 'p4 verify'. #1354073 (Job #85278) ** A command running on a replica could fail to transfer an archive file from the master server, reporting that the file was corrupted, if the file was a compressed binary filetype and if the replica had chosen to transfer the file without uncompressing and recompressing it. This problem was introduced by #1020818. #1352542 (Job #85157) * The MacOSX command line client could fail to complete a parallel sync if two or more parallel transfers attempted to create the same directory in the filesystem at the same time; the failing file transfer would print: "mkdir: /path/to/dir: File exists". #1341599 (Job #85012) ** The error set by a failed post-command trigger might not have had the trigger name set properly. #1341589 (Job #84809) *** Using the 'proxy.monitor.level' configurable when starting the proxy could result in significant physical writes to the device on which the pdb.monitor file was located. These physical writes could degrade performance of the proxy. The physical writes for the pdb.monitor file when using the 'proxy.monitor.level' configurable have been significantly reduced. #1341013 (Job #84992) ** If an archive file for a local shelf on an Edge Server should become damaged or missing, deleting the shelf, or deleting or replacing that file in the shelf, will now cancel any pending file transfer for that file which was listed in 'pull -l'. #1337988 (Job #84848) ** * 'p4 -Zproxyverbose sync --parallel=...' now correctly displays the diagnostic information about which files were delivered from the proxy's cache. #1335377 (Job #84710) ** The fix for bug 70118 is generalized, and now applies to all server platforms. #1334631 (Job #84473) ** A replica server which has been configured to replicate archive files from its master will now correctly replicate the non-lazy-copy archive files in any task stream which contains files of type +S. -------------------------------------------------------------------------- Major new functionality in 2016.1 #1357095 (Job #5897) * ** Ditto (&) mappings are now supported in client views. These allow a client to map files from the depot into multiple locations in the workspace in a one-to-many fashion. Files mapped with this flag are read-only, and may not be open by 'p4 edit', etc. The same files may also be normally mapped, allowing a single copy of the file in the workspace to be openable. Each sync'ed copy of the same file has it's own have record, and so can be sync'ed to a different revision from the other copies of the same file. To sync a specific copy of a file, you must specify the path in client syntax. Existing clients will be able to sync files mapped with ditto mappings. In order for 'p4 fstat' to show details about ditto mapped files, p4 must either be updated or the '-zexpandAndmaps' global flag must be provided. #1320223 (Job #72847, #83427) ** A new command 'p4 reshelve' copies shelved files from an existing shelf into either a new shelf or one that has already been created. The command executes on the server and does not require a client workspace. See 'p4 help reshelve'. #1243015 (Job #79913) * ** The p4 command line, run interactively, will now prompt for login if a command that requires authentication is run when the user is not authenticated. If the login is successful, the original command continues. #1241816 (Job #81114) * The p4 command line now supports a simple, yet powerful, command aliasing feature. Aliases are read from your ~/.p4aliases file (p4aliases.txt on Windows platforms), and are applied to the command you entered before it is sent to the server for execution. Full documentation for the aliasing features is available on the Perforce website or by issuing 'p4 aliases help'. #1214192 (Job #78800) ** Provided that both DVCS partner servers are at 2016.1 or higher levels, the DVCS fetch/push protocols now support copying a shelf from one server to another. Specify the shelf to copy with the '-s NNN' flag to 'p4 fetch', 'p4 push' or 'p4 zip'. Copying a shelf always results in the creation of a new shelf in the destination server; existing shelves, even if similar, are not overwritten. The new shelf will be owned by the user issuing the push or fetch command, even if the shelf being copied was owned by some other user. The shelve-submit and shelve-commit triggers in the destination server are run for the new shelf. Minor new functionality in 2016.1 #1367341 (Job #84856) ** 'p4 -Ztag info' can report low level TCP connection information in a field 'transportInfo' if it is available on the platform. This field may have multiple lines of output which may affect simple parsers. #1351675 (Job #2620) ** 'p4 user -d' and 'p4 group -d' now feature a new '-F' flag. This flag removes the user or group members from groups, and also removes the user or group from the protection table when deleting the user or group. See 'p4 help user' and 'p4 help group' for details. #1340295 (Job #79558) ** 'p4 switch' now features a '-Rx' flag. This flag controls which actions that switch reconciles when changing streams. see 'p4 help switch' for more details. #1339945 (Job #84841) * P4IGNORE files now support escapping '#' comment characters with '\' so that filenames beginning with '#' characters may now be ignored. #1324084 (Job #53693) ** 'p4 protects' now features a '-M' flag which unlike '-m' applies exclusions against the specified path when calculating the maximum permission. #1317819 (Job #84182) ** Form triggers now provide a new 'specdef' variable that provides the definition for the form's spec. #1316579 (Job #52073) ** The 'route.csv' log can now be defined in order to log the full network route of authenticated client connections. Errors related to net.mimcheck are also logged against the related hop. #1315758 (Job #81357) ** Entries in the client spec field 'ChangeView' may now be provided in client syntax as well as depot syntax. #1312518 (Job #76643, #76046) ** 'p4 server -c edge-server|commit-server ' runs configuration commands for edge or commit servers. 'p4 server -o -l ' shows current distributed configuration settings for a commit or edge server as well. #1307507 (Job #11948) ** 'p4 group' now has a 'MaxOpenFiles' field, which can be used to prevent users from accidentally opening too many files in a single command. See 'p4 help maxopenfiles'. #1306511 (Job #70917) ** 'p4 changes #have' now accesses the db.have table lockless for the duration of the compute phase. #1265017 (Job #5626) ** 'p4 dirs' and 'p4 files' now have a '-i' ignore case flag that can be used to list directories/files case-insensitive against a case-sensitive server. #1261234 (Job #76243) ** 'p4 labelsync/tag ' where the filespec is a path that does not include a client or label will execute the compute phase lockless for the db.rev table. #1248091 (Job #77847) * ** Using 'p4 switch' with DVCS no longer removes your current working directory when switching to a branch that does not contain that directory. #1245813 (Job #75242) ** 'p4 -Ztag change -o' now displays the access time for shelved files. An admin can make use of this information to remove old or abandoned shelves. Note, accessing the shelf in anyway will update the access time except for 'p4 describe -s -S '. #1245231 (Job #81003) ** The 'p4 remote' option "nocopyrcs" can be set to disable the DVCS fetch/push optimization which copies entire RCS ,v files as a single file transfer. #1243936 ** 'p4 integrate -v' has been deprecated, having been made obsolete by the introduction of 'p4 populate' in the 2012.1 release. #1243887 (Job #63964) ** 'p4 annotate' now features a '-T' flag to align the leading part of each line of output to a tab stop. See 'p4 help annotate'. #1240991 (Job #79755) ** SSO authentication triggers may now be used in with when native LDAP authentication is enabled. In this case, users who authenticate by LDAP can set a client-side SSO script instead of being prompted for a password. Provided that the SSO trigger succeeds, the active LDAP configurations are used to confirm that the user exists in at least one LDAP server; the user must also pass the group authorization check if configured. SSO triggers will not be called for users who do not authenticated against LDAP. #1238714 (Job #79559) ** The owner of a shelf can now delete it using the '-d -f' options even if there are pending resolves that involve files from that shelf. #1237288 (Job #79804) ** The new option '--me' can be used with 'p4 changes' and 'p4 clients/labels/branches' as a shorthand for '-u $P4USER'. #1236486 (Job #80391) ** Provided that both the local servers and the shared server are at 2016.1 or higher, DVCS configurations that employ files of type +l can now use the new --remote flag on the 'p4 edit', 'p4 delete', and 'p4 revert' commands to lock +l file types exclusively on the shared server, with the locks released automatically when the modified files are pushed. Note that the shared server must be configured as a Commit Server to enable this support, and must set server.allowremotelocking=1. #1232507 (Job #79942) ** 'p4 fetch -v' and 'p4 push -v' are now less verbose by default, and the new '-O' flag allows you to increase the level of verbosity if you choose. See 'p4 help fetch' and 'p4 help push'. #1232022 (Job #53806) ** 'p4 verify' now supports the '-A' flag to allow files in archive depots to be verified prior to issuing the 'p4 restore' command. #1231264 (Job #80305) ** The native LDAP features now support performing LDAP searches with paged results. This is useful when the returned results set could be larger than the LDAP server's allowed limits. To enable this, set the new 'auth.ldap.pagesize' configurable to a value less than the LDAP servers result limit. #1230024 (Job #979) ** 'p4 protect' now supports comments (## prefix) which can be either interlaced with protection entries or appended to them. ## prevent update to this area of the repo write user mike * -//depot/readonly/location/... write user * 10.1.1.1 //depot/secret/location/... ## Jeff P4Admin comments and 2016.1 native stored comments are currently not compatible. A new long option '--convert-p4admin-comments' has been added to the 'p4 protect -o' which will convert any of the P4Admin style comments into the new improved format. Once saved the 'p4 protect' table can be edited and saved with the comments remaining intact (however as of this release you can never go back to the P4Admin tool for your protections after the conversion - and while the protections is only a small part of the admin tool its linked very closely together). e.g. Convert and save: p4 protect --convert-p4admin-comments -o | p4 protect -i #1227849 (Job #79439) ** When syncing open moved files (when either open for edit and moved in the depot, or open for move and edited in the depot), a resolve is scheduled against the revision of the other file that corresponds to the revision range specified on the synced file. If no such revision exists, the older behavior (syncing to the head revision of an edited file, or the move/add rev of a moved file) is used instead. #1225119 (Job #78430) ** 'p4 fstat' now displays the working revision (workRev) for opened files. The working revision is usually the same as the have revision (haveRev) but may differ if the file is explicitly synced to an older revision while open, or implicitly synced as it is opened. #1223153 (Job #78281,#79086) ** The 'p4 remote' spec now supports the ArchiveLimits: field. This field may be used to establish limits on the number of archives desired in a DVCS repo. These limits are enforced by the 'p4 fetch' command. The typical expected use of this field is for scenarios involving a mix of small (source code) files, where all archives are retained, and large (media asset) files, where only the N most recent archives are retained in the DVCS repo. #1218702 (Job #80232) ** New flag '-s spec' for 'p4 protects' allows the 'super' user to run the command using the contents of the file in the spec depot rather than the current protections table. This allows for back-in-time browsing of protection spec changes. Note that protects output will be based on current group data and is therefore not guaranteed to be completely accurate. #1217261 (Job #73699) ** New flag '-f' for 'p4 dbstat' to show free pages in btree files. Allows admins to view into how full the db files are and how much space can be recovered or will be reused before the files grow again. #1214190 (Job #72880) ** 'p4 renameuser' now supports a -f flag to bypass the checks against accidentally merging two unrelated users. #1214183 (Job #75237) ** The 'p4 counter' and 'p4 key' commands now accept the paired flags '--from' and '--to'. A command of the form 'p4 counter --from=XYZ --to=abc my-counter' sets the counter 'my-counter' to the value 'abc' only if it currently has the value 'XYZ'. #1214182 (Job #75236) ** The 'p4 counter' and 'p4 key' commands now accept the '-v' argument when setting or incrementing a key. If -v is specified, the previous value of the counter or key is displayed as part of the command output. Bugs fixed in 2016.1 Patch 16 #1565883 (Job #91885) ** Submitting a moved 'utf8' file using a pre-15.2 client no longer results in a missing archive. #1528859 (Job #91971) ** Parallel sync performance has been improved for some scenarios in which distribution of load across the transmit threads was not an issue. #1513175 (Job #88954) ** The utf8 file type was not handled properly by clients older than 2015.2 and the p4 java api. The server now attempts to work with these older clients by handling the byte-order-mark in the server and having the server produce digests which these older clients will expect. Operation with utf8 files and these older clients will skip proxy caching also. These older clients assume the BOM is present for the utf8 filetype, while 2015.2 and later clients can adapt to a BOM being present or not. Bugs fixed in 2016.1 Patch 15 #1502576 (Job #90943, #71311) ** 'p4 revert' in a federated environment could leave orphaned locks after a filetype resolve that changed files from '+1' to filetypes without '+l'. This has been fixed. #1497158 (Job #90745) ** A particular code path trying to match moved revisions could cause integrate/interchanges to crash. Bugs fixed in 2016.1 Patch 14 #1484097 (Job #89648, #89890) ** The db.sendq entries for a failed parallel sync are now immediately removed from db.sendq. #1474546 (Job #89677) ** 'p4 admin stop/restart' could cause a server crash if the new configurable 'db.monitor.interval' had been set. #1473097 (Job #89657) ** 'p4d -xx' could incorrectly declare "db.workingx/db.revsh inconsistencies found," and incorrectly generate jnl.fix records, in some situations where multiple shelves existed for the same files. #1471274 (Job #89336) ** 'p4 add ...' could generate many "Error object passed to database" errors and fail to terminate when MaxScanRows or MaxLockTime has been reached. This could also happen with 'p4 reconcile' or 'p4 status'. This behavior has been fixed. Bugs fixed in 2016.1 Patch 13 #1466748 (Job #89372) ** The fix for Job #88792 has caused a regression with changeview entries in client syntax when ditto mappings are not present in the client map. This has been fixed. #1465495 (Job #16821, #89204) * ** The configurable 'filesys.checklinks' may fail to prevent files from being added when files are symlinks to directories. This has been fixed. Also, this configurable is now honored for 'p4 reconcile' when detecting files to be added. #1464985 (Job #89311) ** The fetch/push/unzip commands might incorrectly declare a file conflict for a file which was moved multiple times, to different destinations, during its history. #1463567 (Job #86424) ** Edge Servers might halt replicating if an obliterate command was run concurrently with a very large populate or submit command. Bugs fixed in 2016.1 Patch 12 #1459845 (Job #89040) * 'p4 print -o ' will now work even if a P4CLIENTPATH is set or the DVCS P4INITROOT is set. This is a new exception to the P4CLIENTPATH feature. #1458557 (Job #89052) ** A forwarding replica with lbr.replication=shared will no longer attempt to update the (shared) archive area during the file transfer phase of a forwarded 'p4 submit'. The cache-on-submit behavior is still present for forwarding replicas with lbr.replication set to either readonly or cache. #1455848 (Job #88980) ** In replica chaining configurations, replicas which were not directly connected to the master server were not processing archive deletion operations arising from operations such as submission of a binary+S file, deletion of a shelf, obliteration, archive depot operations or retype +l commands. #1455848 (Job #88980) ** In replica chaining configurations, replicas which were not directly connected to the master server were not processing archive deletion operations arising from operations such as submission of a binary+S file, deletion of a shelf, obliteration, archive depot operations or retype +l commands. Bugs fixed in 2016.1 Patch 11 #1453353 (Job #66097) ** 'p4 monitor terminate' can now terminate processes that are blocked waiting for client input. To enable this type of process monitoring set the configurable 'db.monitor.interval' to a value in seconds. A value of '30' for example would mean that every 30 seconds the process will check to see if its been marked for termination. Bugs fixed in 2016.1 Patch 10 #1445531 (Job #88728) ** The configurables rpl.awaitjnl.count and rpl.awaitjnl.interval were inadvertently swapped; they are now corrected. #1447396 (Job #88717) ** Concurrent access to the same label was not possible due to the incorrect lock mode (exclusive) taken against the labelEntity. Bugs fixed in 2016.1 Patch 8 #1442073 (Job #16821) * ** A new configurable 'filesys.checklinks' can be used to prevent files being added that have a symlink in their directory path. When this configurable is set to '1', trying to 'p4 add' a file that is symbolically linked below the client root will fail. Setting this configurable to '2' allows the user to bypass the check by using the '-f' (force) option. #1441036 (Job #87086) ** When expanding keywords, if one of them is 'Author' then a lookup of the change description is required. This should be lockless. #1438810 (Job #88380) ** Unicode LDAP query results were not being handled correctly on Windows servers in unicode mode, which could have caused the server to crash. This has been fixed. Bugs fixed in 2016.1 Patch 7 #1430995 (Job #88180) ** 'p4 info' is now permittied if the server is running with an expired license. #1430566 (Job #87773) ** 'p4 integrate' will now do an exhaustive scan of direct credit to attempt to establish that no integration is needed prior to loading any indirect credits. Bugs fixed in 2016.1 Patch 6 #1429825 (Job #88071) ** 'p4 protect' command will now reject invocation from the P4Admin tool if (new to 2016.1) '##' comments have been added to the protection table. #1423363 (Job #87945) ** Correct Abort Retry Ignore message from 3rd party memory manager on the Linux platform. #1417623 (Job #87802) ** The very first 'fetch -t' command issued against a server will auto-create the 'tangent' depot in that server. Subsequent commands issued by that same network session would get errors if they referred to the tangent depot. #1416148 (Job #69001) ** 'p4 license' may now be used to install a new license when the server is unlicensed or the license has expired. The following commands are also allowed when running with an expired license: 'p4 login', 'p4 admin stop' and 'p4 admin restart'. #1413722 (Job #87676) ** Performance for parallel 'p4 submit' through an edge server has been improved by batching file transfers and reducing the contention on the database transfer table. #1412767 (Job #87638) * The 'p4 init' command would write a small number of journal records to the end of the file specified by P4JOURNAL, if set. The local server initialization is now performed with -J off. Bugs fixed in 2016.1 Patch 5 #1411350 (Job #81360) ** A 'p4 fetch' command which transferred both a text (RCS) file whose archive was already present in the destination server and a lazy copy of that file, would leave the lazy copy corrupt. 'p4 verify' would report 'MISSING!' and requests for the file's content would report 'RCS checkout failed!'. #1410893 (Job #87181) ** Correct the digest used to ensure that content is transferred correctly to commands within triggers (such as a 'change-content' trigger) when submitting a shelf. A shelf is implicitly submitted to the commit server when a submit is run on an edge server. #1410428 (Job #87304) ** On Windows when running a .exe trigger from the depot, the Server may fail to remove the temporary .exe file. This has been corrected. #1409450 (Job #87294) ** 'p4 clean' would not delete files that were not present in the depot if they were in an area of the client workspace mapped to a read-only path: mapped by a ChangeView entry, a ditto mapping or mapped to a remote depot. New files under these paths are now deleted by 'p4 clean'. #1407749 (Job #87327) ** Deleting a pending change with an Identity, or deleting an empty committed change with an Identity, incorrectly failed to delete the database record in the db.changeidx table. Bugs fixed in 2016.1 Patch 4 #1405586 (Job #87218) ** Fixed a performance problem introduced by change 1315758 when syncing files to a label that contains files outside of the path specified, not mapped to the client or excluded by protections. Bugs fixed in 2016.1 Patch 3 #1404274 (Job #87179) ** Fixed a performance problem introduced by change 1227849 when syncing a large number of files to #0 with some opened for move. #1401824 (Job #87006) ** Setting dm.changeview.openable=1 will allow files restricted by a changeView to be opened with the pre-16.1 behavior. These files can be opened and shelved, but cannot be submitted. #1398982 (Job #87036) ** Comments in the protections table no longer cause gaps in the tagged output of 'p4 protect -o'. See p4apinotest.txt more details. #1397598 (Job #86850) ** It is no longer legal to define a depot named "..". #1396903 (Job #86855) ** Multi-threaded applications using the same connection could disrupt the flow control of long running commands like submit. This change prevents the server from executing any more callbacks as soon as the problem is detected. Bugs fixed in 2016.1 Patch 2 #1395783 (Job #86930) ** Setting auth.autologinprompt=0 will disable the automatic login prompting feature. #1395197 (Job #25700) ** 'p4 info' against a server configured to use P4AUTH would always return userName *unknown* in tagged output mode. The P4AUTH server is now contacted to check if the user exists: this only applies for tagged output mode when the '-s' flag is not provided. The new behavior can be disabled by setting info.p4auth.usercheck=0. #1394382 (Job #86755) ** Trying to send a large (>1GB) message to the client would cause a communication hang between the client and server. #1394035 (Job #86785) ** A ctrl-C (or client failure) of a 'p4 edit' command against an Edge Server could leave orphaned lock records of +l files - should the dropped client connection not be caught in time. #1391673 (Job #86740) ** ChangeView mappings for depot paths that are mapped to the client, but are partially overridden would cause those overridden paths to be considered readonly. This has been fixed. #1391182 (Job #86031) ** 'p4 reshelve' failed to copy db.resolvex records correctly. This prevented files opened for move from being reshelved and the unshelved. This has been fixed. #1388564 (Job #86608) * A command-line alias may now use 'p4subst' to replace a pattern with the empty string (""). #1387597 (Job #86513) * Defining a command-line alias for a tagged-mode command fails with the error "command did not return a spec." Bugs fixed in 2016.1 Patch 1 #1386575 (Job #86514) ** Syncing to an 'autoreload' label could crash the server. #1386381 (Job #86524) ** The server consistency check command 'p4d -xx' now does not check for missing db.workingx or db.change records that correspond to a db.revsh record. Now db.revsh records may exist without these when promoted shelves are used in a federated environment. #1385588 (Job #86505) * On Unix platforms, variables set with 'p4 set' would override those set in the environment: this was inconsistent with the existing behaviour on Windows. Environment variables now take priority over variables set in the P4ENVIRO file with 'p4 set'. #1384452 (Job #74886, #86396) ** 'p4 clean' would fail to sync files when needed when they are exclusively opened by another client. This has been fixed. #1384027 (Job #84426) ** 'p4 submit' from an edge server using 'revertunchanged' could leave orphaned exclusive locks if all files in the change were reverted and some were exclusively locked. This has been fixed. #1383934 (Job #86041) ** Change handling of utf8 server type files when working with clients <= 2015.1. For these clients, the utf8 type files are treated as server type text, so as to avoid any additional line-ending. These files will not have associated BOMs (Byte order marks) when they are synced in this case. This has no bearing with clients >= 2015.2. #1383644 (Job #85547) * ** Fixed a bug where a "resolve -am" resulting in a lazy copy would not set the modtime correctly on the workspace file. #1379802 (Job #86262) ** Improve performance around structured logs. Log writers will now only acquire a shared lock on the 'logrotate' server meta lock when there are actually writes to the structured logs. #1379670 (Job #85991) ** Report to stderr (except on Windows), and syslog or the event log (as supported by the platform), any errors encountered when writing to the server log or a structured log. #1378660 (Job #85882 ) ** 'p4 server -c edge-server' now allows configuration of more than just three 'startup.' threads. Also 'p4 server -o -l' will display them all rather than just the first three. #1378324 (Job #86222) ** Following a 'fetch -t' command, the 'resubmit' command must be used, with the '-R' flag to resume after any merge conflicts are resolved, to coordinate the resubmit of the tangented changes. The 'submit' command now checks for an accidental attempt to submit a change that should have been run as 'resubmit -R', and issues a message rather than allowing the submit. #1378064 (Job #85458) ** 'p4 copy' could produce a librarian error when attempting to copy a source file that was moved and then deleted. Fixed. Bugs fixed in 2016.1 #1378294 (Job #86222) ** Following a 'fetch -t' command, the 'resubmit' command must be used, with the '-R' flag to resume after any merge conflicts are resolved, to coordinate the resubmit of the tangented changes. The 'submit' command now checks for an accidental attempt to submit a change that should have been run as 'resubmit -R', and issues a message rather than allowing the submit. #1378013 (Job #85458) ** 'p4 copy' could produce a librarian error when attempting to copy a source file that was moved and then deleted. Fixed. #1369710 (Job #85876) ** 'p4 submit --parallel' was not supported in a federated environment when the commit server is on a Windows platform. Trying to do this in this scenario now causes the submit to proceed without using the parallel threads. Also this has been documented in 'p4 help submit'. #1368620 (Job #85851) * 'p4 clone' was failing to copy the "Options:" values from the remote spec on the central server, and was instead using a hard-coded "Options: unlocked nocompress" for the 'origin' remote. #1366865 (Job #79423) ** 'p4 changes' would ignore a client's ChangeView if the specified path matched a sufficient number of revisions, invoking a specific optimization. This has been fixed. #1366778 (Job #85680) ** Improve concurrency around structured logs. Log writers will now acquire a shared lock instead of an exclusive lock on the 'logrotate' server meta lock to block log rotations. #1365819 (Job #85738) * P4IGNORE files inside directories that should have been ignored by P4IGNORE were being read, and any reverse rules were being applied within that directory. These files are no longer being read. #1365347 (Job #85376) ** Fix for false database corruption error when long descriptions are updated concurrent to readers reading the same description. #1364433 (Job #75866) ** Change 996993 is reverted, as the performance impact was large. #1362824 (Job #85371) ** 'p4 sync --parallel=..' using multiple file arguments could fail to transfer some files if any of the file paths did not contain enough data to use parallel threads. This has been fixed. #1357895 (Job #85404) ** When LDAP based user auto-creation is enabled, if the 'p4 ldap' spec has the 'downcase' option enabled, then the new user will be created with a lower case username. #1356056 (Job #85346) ** Fixed a memory leak in 'p4 verify'. #1355500 (Job #85298) ** 'p4 sync -r' and 'p4 switch -r' could fail to update a file that was open on another client with the new depot path. This has been fixed. #1354741 (Job #79424) ** The server consistency check command 'p4d -xx' now reports invalid arguments and allows the user to just provide a single table argument to perform all checks for that table. #1354073 (Job #85278) ** A command running on a replica could fail to transfer an archive file from the master server, reporting that the file was corrupted, if the file was a compressed binary filetype and if the replica had chosen to transfer the file without uncompressing and recompressing it. This problem was introduced by #1020818. #1352542 (Job #85157) * The MacOSX command line client could fail to complete a parallel sync if two or more parallel transfers attempted to create the same directory in the filesystem at the same time; the failing file transfer would print: "mkdir: /path/to/dir: File exists". #1349284 (Job #83729) ** Configuring a readonly client by adding the 'Type' field only succeeded if it was placed after the 'Options' field. #1348225 (Job #85019) * The default P4IGNORE rules no longer match directories named the same as the value of P4CONFIG. #1341013 (Job #84992) ** If an archive file for a local shelf on an Edge Server should become damaged or missing, deleting the shelf, or deleting or replacing that file in the shelf, will now cancel any pending file transfer for that file which was listed in 'pull -l'. #1337988 (Job #84848) ** * 'p4 -Zproxyverbose sync --parallel=...' now correctly displays the diagnostic information about which files were delivered from the proxy's cache. #1335377 (Job #84710) ** The fix for bug 70118 is generalized, and now applies to all server platforms. #1334196 (Job #83965) ** Removing the client.readonly.dir setting from a server with one or more clients of Type: readonly already defined makes those clients unusable until the configuration setting is restored. This situation is now diagnosed with a more precise error message. #1333068 (Job #84451) ** Issuing control-C during submit from a 2015.2 Edge Server using submit.unlocklocked could leave files locked on the Commit Server which were difficult to unlock. This has been fixed. #1332907 (Job #84705) ** A failed 'p4 fetch' or 'p4 push' operation now removes any archive files which it copied to the destination server prior to the failure. #1330870 (Job #84661) ** 'p4 renameuser' now re-indexes any jobs owned by the renamed user. #1327174 (Job #83931) ** 'p4 istat' will now run directly against an edge server rather than be forwarded to a commit server. #1324686 (Job #75521) ** 'p4 labels -e label.*' would fail to match labels due to the processing of '.' adjacent to '*' wildcard. #1324692 (Job #84006) ** 'p4 submit' from an Edge Server using revertunchanged would leave reverted files writable. This has been fixed. #1324437 (Job #84468) ** A parallel sync via a proxy might not distribute the file transfer load across all the transmit threads as fairly as it should. #1323707 (Job #84436, #84437) ** 'p4 journals' now displays the full error message text for a failed checkpoint or journal entry. Also, if a checkpoint failed due to the checkpoint filesystem being mounted read-only, a checkpoint-failed entry is now written in db.ckphist. #1323224 (Job #84441) * 'p4 clone' would mis-handle depot file paths containing spaces. #1322105 (Job #84375) ** The 'SearchBindPasswd' field of the 'p4 ldap' may now be quoted. This allows '#' characters to be used in the password without being interpreted as the start of a comment. #1321747 (Job #84368) ** All replicas of a Commit Server now accept and process the 'opened -x' command. Prior to this change, only Edge Server replicas did so. #1321128 (Job #80987) ** Selection of a base when merging a move operation was improved for a particular case involving a complex sequence of previous move operations. #1319794 (Job #83748) ** Servers with structured server logs configured will no longer stop responding if a trigger is defined which executes automated 'kill' commands on server sub-processes. #1318024 (Job #75136, #75135, 71853, 85501) ** Parallel sync and submit commands will not fail when net.parallel.max is unset or the requested number of parallel threads exceeds net.parallel.max. Instead the command will proceed without using parallel threads, or will use the max number of allowed threads. In these cases an informational message will also be written to the log. #1315787 (Job #84128) ** A server which is configured to use submit.identity=serverid but did not have a serverid defined now generates an error at submit, instead of generating a malformed changelist identity. #1313674 (Job #84022) ** A replica server which was started up at a moment when its master server was down or unreachable would fail to start correctly, and would print an incorrect error message about archive filesystem configuration in the replica log. #1313382 (Job #84023) ** The 'p4 zip -A' command could fail to include all the necessary archive files, leading to an "archive entry missing" error when running 'p4 unzip -A' subsequently. #1313143 (Job #80887) ** The 'serverlog.retain.N' configurable now restricts the number of rotated logs kept when the 'serverlog.counter.N' configurable is also set for the same log. #1311906 (Job #83995) ** 'p4 sizes -h/-H' and 'p4 diskspace' could print incorrect values for the fractional component of the file or filesystem size. #1308952 (Job #1557) ** 'p4 reviews ' was not honoring exclusion lines. #1302870 (Job #81355) ** Files restricted by a changeView mapping are no longer openable. These files were already read-only, but gave no indication until submit rejected them. This makes the changeView's read-only behavior consistent with remote depots and ditto mappings. #1263380 (Job #83500) ** If the operating system should run out of process resources, and if structured server logging was configured at a high enough level, the message recorded in the structured server log about the exhaustion of process resources was improperly formatted. #1260940 (Job #55795) ** The replica behavior fix for autoreload labels (Job #77558) now also applies when lbr.replication=readonly. #1257690 (Job #83296) ** Starting the Server on read only db files incorrectly produced a licensing error. Now an access denied error is produced. #1255960 (Job #81403) ** A DVCS 'fetch -t' command which encounters an internal error relocating the conflicting changes will no longer loop forever retrying the failed change relocation. #1247366 (Job #79908) ** Propagating attributes could be removed when performing 'p4 resolve -at' after unshelving into an opened file. This has been fixed. #1245711 (Job #81034) ** Now at most one backup thread is allowed in a server at the same time. Multiple backup threads are never useful and can cause unexpected behavior. #1245120 (Job #81186) ** With 'peeking' enabled and a very high submit concurrency rate, the maxCommitChange counter may get updated in the wrong order by a DVCS fetch or push command. The bug might cause some transient inconsistency (most likely with aggressive automation that tracks submits). #1244865 (Job #77040) ** Large fech/push operations are now more concurrent. Specifically, the write lock on the db.counters table is held for a much shorter duration. #1242972 (Job #81083) ** When authentication triggers have been configured, operator users now authenticate against the auth-check trigger instead of the service-check trigger. #1242773 (Job #81040) ** The server.locks.archive configurable introduced by #898102 now also applies to the 'p4 restore' command. #1239015 (Job #80722) ** A file which was integrated from a streams depot to a local depot, or vice versa, would be placed into the wrong location in the proxy cache if it was accessed via the proxy by a command such as 'p4 sync' or 'p4 print'. Note that the symptom of this bug is in the proxy cache, but the fix is in the server. #1236537 (Job #59266) ** On Linux and other Unix-like platforms, the 'p4 diskspace' command was reporting the filesystem's reserved space as used. 'p4 diskspace' now excludes the reserved space from the display of the used space, which more closely matches the behavior of the system 'df' command. #1236012 (Job #80864) ** A mistake in the 'p4 remote' file mapping lines will no longer allow a 'p4 fetch', 'p4 push', or 'p4 zip' command to generate filenames with illegal depot syntax. #1235448 (Job #80818) ** If a fetch, push, or unzip command imported a move/delete revision which was created by a pre-2013.1 server, and the revision of that file immediately prior to the move/delete revision was an integration from a location which was not covered by the remote map used by the fetch/push/unzip command, the metadata for the move/delete revision could be damaged. #1234884 (Job #75212) ** 'p4 configure show server.locks.dir' now shows the correct default. #1234286 (Job #80762) ** 'p4 resolve -at' between files with differing charsets will now copy the charset metadata even if server.filecharset is not set. This prevents the 'copy from' resolve record from downgrading to a 'merge from' due to the charset difference. #1232803 (Job #72749,#80586) ** 'p4 configure show', with no additional arguments, would show some configuration variables that were not explicitly set, but were instead still operating with their default values. #1228149 (Job #80494) ** A change with a missing db.desc record could cause a server crash if that change was accessed by a fetch, push, or zip command. #1227329 (Job #80379) * ** On Windows an uninitialized variable could cause a file rename to fail. This has been corrected. #1225579 (Job #80086) ** Correct high ascii character handling when the Windows Server is in unicode mode, related to long file name handling. #1225187 (Job #74936) ** A 'sync --parallel' command issued via a forwarding replica would complete immediately, but would sync no files. #1224269 ** 'p4 shelve' now displays the working revision for files being shelved rather than the current depot revision; this fixes an issue with added files being displayed as '#none'. #1223845 ** The default value for lbr.retry.max is now 50. #1223646 (Job #80332) ** If a fetch/push command was issued with a Commit Server or Edge Server as the destination of the fetch/push, and the set of files being copied included some files of type +l, and the command was interrupted or cancelled (e.g., using ^C), then the files of type +l were left exclusively locked by a client with an invalid client name (the name was wrongly prefixed by a double slash). #1222063,1304112 (Job #80274,#83625) * 'p4 init' and 'p4 clone' would sometimes display errors twice. #1214194 (Job #79836) ** If rpl.checksum.change >= 1, the 'p4 unzip' command will now write changelist checksum journal notes upon completion. #1214188 (Job #79814) ** 'p4 sizes //...@=NNN', when used to display the size of files in a shelf, could display incorrect data if one or more files in the shelf had been replaced using 'shelve -f' or 'shelve -r' and the actual content of the shelved file was unchanged. #1214187 (Job #79569) * The -p flag to 'p4 clone' is now optional; if not specified, clone uses the remote server specified by P4PORT in the environment. Additionally, when cloning a single filepath, the '-f' flag is now optional in front of the path, so the command that previously required 'p4 clone -p host:port -f //file/path...' can now be specified as 'p4 clone //file/path...' if P4PORT is already set. #1214184 (Job #77782) ** The archive deletion journal records for archives deleted by certain shelve and submit command forms are now written in individual journal transactions, which can improve the responsiveness of replicas waiting for the archive deletion to complete. -------------------------------------------------------------------------- Major new functionality in 2015.2 #1211694 (Job #77627) ** Stream specifications may now be opened and submitted, enabling them to be staged on a particular client and tested before being submitted atomically in a changelist along with a set of files. See 'p4 help streamcmds' for more information. #1047057 ** Improve performance and reduce fragmentation in the 'db.have' table by partitioning 'build' clients away from interactive users. This change adds a new type of client 'readonly'. A client is configured readonly by setting the 'Type:' field in the client spec. Setting a client readonly must happen at client creation time, once set in cannot be modified. A 'readonly' client has its own personal 'db.have' database table that is not journaled and can be quickly removed. This type of client is ideal for the build automation cycle that creates a client, syncs, builds then deletes the client. #998379 * ** UTF8 server file type added. Files detected to hold utf8 textual contents can be stored as a utf8 file. These files will have BOMs (Byte order marks) removed when stored on the server and added back when synced. Minor new functionality in 2015.2 #1237948 (Job #75238) ** 'p4 opened -g' in a distributed environment reports files opened on the Commit Server. This can be run from any Edge Server in the distributed environment to show files that are globally locked. #1233417 (Job #12755) ** 'p4 annotate' now supports a new flag '-u'. This flag instructs annotate to display the user who modified the change and the date when the modification occurred. #1230546 ** Added support through the server specification to surface a helix cluster administration server in the server spec metadata. The new Server Services Set Name is hxca-server and its server type is admin. #1216733 (Job #77058) ** Added support through the server specification to surface zookeeper servers and the clusterId in the server spec metadata. New Server Types: * identifier * admin New Server Service Set Names: * for type identifier: cluster * for type admin: zookeeper-server #1212286 (Job #76687) ** The warning messages issued when 'p4 copy' opens 'move/add' source files for 'branch' in the target (added in change #673961) have been disabled by popular request; users who are following recommended branching patterns do not generally need to worry about this situation, and so the warnings were causing more trouble than they were preventing. Admins that wish to re-enable these warnings for all their users may do so via the new undoc configurable 'dm.copy.movewarn'. #1211671 (Job #69771) ** 'p4 submit' from an Edge Server in a distributed environment now takes early locks on the files on the Commit Server. Now when concurrent submits occur from Edge Servers, the failures are reported earlier, resulting in less wasted time and work done on Edge Servers for failed submits. #1210497 (Job #79997) * p4 command line will try to discover a good character set to use if P4CHARSET is set to a wide character set like utf16. p4 set will now allow -C and -Q before the 'set' verb. Case insensitive platforms now check for setting 'p4charset' to problematic values. #1209881 (Job #75238) ** 'p4 lock -g -c ' can be used to lock files in a numbered change on the Commit Server from an Edge Server. This allows users in a distributed environment to take global locks. #1206326 (Job #1194) ** The label spec now allows a 'group' as the label owner. When a label is owned by a group, any user within the group may modify the label spec, and update which files are tagged by the label. #1203354 (Job #47288) ** 'p4 depot' now accepts a -t (type) argument to specify the type on new depot creation. Any depot type may be passed on the command with this argument, but the type will be ignored should the depot already exist. #1171246 (Job #77870) * ** 'p4 login' now accepts a remote name specified with the -r argument, causing the login to be forwarded to the server specified in the remote spec. If a RemoteUser is specified, the login is performed for that user. #1130470, #1143127, #1225282, #1228379 (Job #79082, #80368, #80511) ** There is now a new tunable "server.global.client.views" that controls whether or not the view maps of a non-stream client on an edge or workspace server are made global when a client is modified. By default server.global.client.views=0 and so client view maps are never made global, matching the pre-2015.2 behavior. If server.global.client.views=1 on an edge or workspace server, then client view maps will be made global when a client is modified on that edge or workspace server. If this tunable is 0 on the edge/workspace server then client view maps on that edge or workspace server are not made global when they are modified. Note that the view maps of a client on a replica must be made global if that client is to be used as a template on another server. This tunable can be set globally, in cluster scope, or individually for each server. Normally it would be set globally: p4 configure set server.global.client.views=1 and individual edge servers that don't need global client view maps may disable it individually: p4 configure set edge1#server.global.client.views=0 In a DCS cluster the master server and all workspace servers must have this tunable set to 1 because this is needed for client recovery in case a workspace server fails. Therefore P4CMGR sets server.global.client.views=1 at cluster scope when the cluster is created, and this setting should not be changed. This change modifies the behavior of Job #77790, which always made non-stream client view maps of an edge or workspace server be global when the client was modified; with this change, modifying a non-stream client makes its view maps global only when server.global.client.views=1 on the edge/workspace server. This allows client maps to be global on most edge servers while keeping them local on those edge servers that don't need or want them to be global. Note that setting this tunable does not immediately make any client view maps be global; that happens only when a client is modified afterwards. Clearing this tunable does not delete the view maps of any clients, but will prevent subsequent changes to a client's view map from being propagated to other servers. If a client with global view maps is deleted then its view maps are also deleted globally regardless of the value of server.global.client.views; this is to prevent orphaned view maps. #1129505 (Job #29068) ** The commands that service users can run now includes: 'p4 logparse', 'p4 logschema', 'p4 logstat', 'p4 logtail', 'p4 servers'. #1129944 (Job #77291) * ** The 'p4 remote' spec now contains the new field "RemoteUser:". For DVCS scenarios where you wish to fetch and push to multiple remote servers and you need to use a different Perforce identity for a particular remote server, you can specify that identity in the RemoteUser field and it will be used by fetch/push commands against that remote server. #1127420 (Job #29068) ** The commands 'p4 logparse', 'p4 logstat', and 'p4 logtail' now indicate the log number for any structured logs being read. This is to assist applications that follow logs across rotations. Additionally these commands support referring to the running log files with their current log numbers. The log numbers begin at 0. #1126846 (Job #76036, #72755, #74831 ) ** New configurables net.parallel.* allow 'p4 sync' to automatically use parallel threads to transfer files. See 'p4 help sync' and 'p4 help configurables' for complete information. #1100312 (Job #79497) ** The 'p4 stream' and 'p4 stream -o' commands now default to the current client's stream if no stream name is specified. #1099310 (Job #75868) ** When unloading clients on an edge server, a new flag '-p' will promote any non-promoted shelves belonging to the specified client that is being unloaded. #1099331 (Job #73681) ** A replica with lbr.replication=cache now supports the use of the 'verify -t' command to schedule transfer of missing archive files. For this to work effectively, such a replica should have one or more 'pull -u' threads configured for it (see change 1051994), perhaps also using the '--batch=N' flag for those threads (see change 1053213). #1073565 (Job #76035) ** New configurables net.parallel.submit.* allow 'p4 submit' to automatically use parallel threads to transfer files. See 'p4 help submit' and 'p4 help configurables' for complete information. #1070966 (Job #73912) ** New trigger types journal-rotate-lock and journal-rotate allow for maintenance routines to be run on servers after the journal has been rotated, either whilst the database tables are still locked or after the locks have been released. These triggers are intended to be used on replicas where journal rotation is triggered by journal records. The server must be running for these triggers to be invoked; running 'p4 admin journal/checkpoint' will invoke the triggers, but running 'p4d -jc' or 'p4d -jj' directly against a server will not. #1068319 (Job #78060) ** The behavior of cluster-only feature of workspace backup can be modified by setting a new "Backup" field in the client specification. Cluster users can set their client to opt out of the workspace backup feature by setting this field to the value "disable". By default, the value of the Backup field is assumed to be "enable" for all read/write clients. If this field is set to "disable" then that client workspace will neither be backed up nor be considdered for auto-unload. Setting this field has no impact for clients not hosted in a clustered workspace-server. #1067861 (Job #40729, #79069) ** The server will now display the canonical filetype for a file, as introduced by change #7724, and will no longer display the shorthand alias, for all clients at API level 79 or above. So, for example, 'p4 opened' for a file of type 'binary+Sw' will now display: '//depot/foo#1 - add default change (binary+Sw)' rather than '//depot/foo#1 - add default change (ctempobj)'. If your application relies on receiving the shorthand aliases, either continue to use the 2015.1 (or older) client API, or get the old behavior by setting protocol variable "api" to 78 (2015.1). For the command line 'p4' executable, the output can be frozen to 2015.1 output by using -Zapi=78. #1067301 (Job #78817,#78828) ** A server with rpl.checksum.change >= 1 will now write changelist checksum journal notes when performing the commands: populate, fetch, and (inbound) push. #1066965 (Job #76882) ** 'p4d -xu' will no longer run automatically if there are fewer than 1000 changelists. Upgrades must be run manually unless the server is a DVCS personal server; in this case, any upgrades steps are run automatically. #1065023 (Job #79018) ** 'p4 changes -e changelist#' is now fully supported. This flag provides an alternative to 'filespec@change,#head' processing and can be much faster. #1061282 ** 'p4 labels ' where the filespec is a single or wildcard revision with no range, now runs lockless. #1056188 (Job #75648, #76195, #76632) ** In a distributed environment, unshelving of promoted shelves into open files and branches on a server that the shelf did not originate is now allowed. #1053213 (Job #78598) ** 'p4 pull -u' now accepts the '--batch=N' flag, provided that both replica and master are running at this release level or higher. The --batch=N flag is particularly intended for situations where large numbers of very small files are regularly retrieved by a replica separated from its master by a high-latency network. #1052310, 1009333 (Job #50432) ** Add the ability to root streams at a deeper level in the depot directory hierarchy. New stream depots contain the 'StreamDepth' field for defining the root level of a stream's path (the number of slashes found within the stream's Stream field) below the depot name. This field accepts a value between one and 10, while it defaults to one. As new streams are created, the number of slashes of the stream's Stream field (beyond the depot name) must match the StreamDepth field of the depot. As the StreamDepth field is defined in the depot, all streams of the depot are bound by the same depth. For example - a stream depot Tango has the StreamDepth: 2 which allows for two slashes in the stream specification's Stream field beyond the depot name. //Tango/core/Rel4.0 //Tango/docs/DevQ4 both these streams reflect the above depot StreamDepth field. Note the performance implication; the total path to any file revision held within a stream are compounded with stream's Stream field. See 'p4 help depot' and 'p4 help stream' for further details. #1052216 * ** 'p4 reconcile -k' updates the have list to match workspace content. This can be used to reconcile a client's empty or incomplete have list with files on the workspace that have the same content as their mapped files in the depot. #1051994 (Job #78599) ** It is now legal to configure one or more 'pull -u' threads on a replica with lbr.replication=cache. If the replica is an edge-server or build-server, 'p4 sync' commands on that replica will now use any such 'pull -u' threads to service cache faults. #1049517 (Job #78600) ** A command which is run in a replica with lbr.replication=cache will now use a single connection to the master server to perform all its archive content fetches. #1049398 (Job #78553) ** On a replica with monitor > 0, the pull threads will now periodically update their status; the current pull thread state can be viewed via 'p4 monitor show -a -l -sB'. #1049397 (Job #78521) ** The command 'p4d -jd db.' now works for the tables db.sendq and db.revpx. #1047403 (Job #77798) ** New users that are created by authenticating against an LDAP server may now have their FullName and Email fields populated from their record in the LDAP server. This requires the relevant attributes to be named in the LDAP configuration. #1044999 (Job #78470, #77790) ** Workspaces bound to an edge or workspace server may now be used as a template when creating a workspace on a different edge or workspace server. Before using a bound workspace as a template on another server you should ensure that its view map has been been made global by making a trivial change to the client (perhaps to the Description field) and saving it. #1042495 (Job #78035) ** The 'auth.csv' log can now be defined in order to log the results of 'p4 login' attempts. Any additional information provided by the authentication method is included in the log entries. #1023845 (Job #77790) ** The view maps of non-stream workspaces local to a edge or workspace server are now global and so are visible on all nodes in a distributed or cluster environment. Note that client view maps are made global only when they are saved (either created or modified); the view map of an existing non-stream client bound to a edge or workspace server is not made global until the client has been saved using a p4d that includes this change. #1043956 ** The fetch/push/zip/unzip commands now include revision attributes as part of copying submitted changes from one server to another. Note that, once a particular revision has been copied to another server, using 'attribute -f' to change the attributes on that revision will only affect the revision on that server, not on any other server to which it may have been copied. #1042179 ** The fetch/push/zip/unzip commands now include fix data as part of copying submitted changes from one server to another. Fix records are only added to the destination server if the corresponding job is already present on that server; jobs must be manually copied between servers. When fetch/push/unzip copies a fix record into the destination server, it runs any fix-add and form-commit (job) triggers that are defined for that server and also adds db.logger event records if the logger is enabled. The fix-add trigger is only run by the unzip command if the --enable-dvcs-triggers flag is set. #1042005 ** * Windows long file name support now defaults to enabled. This is equivalent to this tunable setting, "filesys.windows.lfn=1". #1041784 (Job #75533) ** LDAP authentication using the SASL bind method can now optionally separate the realm from the username when the username is in either 'user@realm' or 'realm\user' formats. #1039642 (Job #77628) ** 'p4 switch' now supports switching to a point-in-time stream. By specifying 'p4 switch stream@change' the command will set the stream spec/view creation as of that change and sync any files also to the change specified. #1038646 (Job #76913) ** At 'db.peeking=3', 'p4 files ' will now access the rev table in lockless mode, even if not using a revision specifier or a revision range. #1038593 (Job #78363) ** 'p4 files ' when using a revision specifier other than #head (e.g. @label), or a revision range ending with a revision specifier other than #head, will now access the rev table in lockless mode. 'p4 files @label' will now also access the label table in lockless mode. And 'p4 files @change,@change' will now also access the revcx table in lockless mode. #1038497 (Job #77113) ** The usernames of members added to a Perforce group by 'p4 ldapsync' can now optionally be normalised into lowercase by setting the 'downcase' option in the LDAP spec. #1037285 (Job #78363) ** 'p4 sync @label' will now access the label table in lockless mode. And at 'db.peeking=3', 'p4 fstat @label' will now also access the label table in lockless mode. #1035528 (Job #71588) ** An admin may now run 'p4 -c unlock -x -f [files...]' to forcibly unlock files of type +l which are not marked orphaned, but which can no longer be unlocked by the user who has them opened. #1032823 (Job #65810, #65293, #59656) * P4IGNORE can now be set to a list of filenames and paths to files, using ';' as the separator on Windows and ':' or ';' on other platforms. Earlier items in the list are loaded before later ones. If the list item contains a slash character it is considered a path and is loaded once, otherwise the item is considered to be a filename and the directory tree will be scanned for files with that name. #1032762 (Job #2194) * When loading settings from a P4CONFIG file, if there are additional P4CONFIG files higher in the path with additional variables set, those additional variables are now loaded too. #1032758 (Job #65293) * The placeholder '$home' in any Perforce environment variable is expanded to the path of user's home directory when that variable is used. The user's home directory is taken to be the value of the 'HOME' environment variable or 'USERPROFILE' on Windows. #1032190 (Job #72108) ** 'p4 ldap' now stores LDAP configurations in the new db.ldap table. This table is journalled, so LDAP configurations are now included in checkpoints and are replicated. #1029470 (Job #72671, #76543) ** Names of automatic labels can now be used as specifiers in import mappings on stream specs and in the 'ChangeView' on client specs. #1023388 (Job #76168) ** A replica may specify rpl.compress=4 to indicate that network data compression should be used for the journal pull or journalcopy connection between the replica and the master, but not for the 'pull -u' connections. #1020818 (Job #77708) ** A replica server with lbr.replication = readonly or cache now issues a clearer error message if an archive file is missing on the replica and also damaged on the master. #1020055 (Job #51182) * New client side command 'p4 ignores' reports the mappings computed from the rules defined in P4IGNORE files and allows paths to be tested against those P4IGNORE rules. #1015978 (Job #76105) ** The 'p4 change' spec now includes two additional fields: - ImportedBy: the user who issued the fetch, push, or unzip command which imported this change into this server. - Identity: the identity of this change. These fields are primarily useful for DVCS scenarios, in which changelists are copied from one server to another, and help you correlate the changelist's basic identity as it is so copied. In such configurations, we recommend using the submit.identity configurable to enable automatic generation of changelist identities by the submit command, unless you have an alternate algorithm which you prefer to use for generating universal changelist identity values. #1012383 ** 'p4 fetch' now accepts the -t argument, specifying that conflicting work should be moved into a tangent in the tangent depot, automatically creating that depot if it doesn't yet exist. The tangented changes can then be resubmitted using 'p4 resubmit'. The new -t flag replaces the now obsolete -u flag. #1009476 (Job #77230) ** 'p4 diff2' now defaults to diffing the current stream (if any) vs its parent stream if no other branch view is specified. #1003898 (Job #79398) ** New trigger types push-submit, push-content, and push-commit allow for policy enforcement and tool integration for changes that are imported into a server via the push, fetch, or unzip commands. These new triggers are largely similar in behavior to the corresponding change-* triggers. The unzip command only runs these triggers if the --enable-dvcs-triggers flag is set. #991320 (Job #56642, #59382, #59911, #67993, #70484, #71465, #71466) * Enhancements to the P4IGNORE rule syntax: - Unix path separators '/' are now handled on Windows as if they were Windows paths. Rules using Unix paths will now work on all platforms. - Rules with leading slashes apply to files and folders relative to the P4IGNORE file containing the rule. For example, '/*.c' will only cause C files in the same directory as the P4IGNORE file to be ignored. - Rules with trailing slashes only affect directories. - The '**' wildcard is expanded to the '...' wildcard. Bugs fixed in 2015.2 #1565474 (Job #91885) ** Submitting a moved 'utf8' file using a pre-15.2 client no longer results in a missing archive. #1513385 (Job #88954) ** The utf8 file type was not handled properly by clients older than 2015.2 and the p4 java api. The server now attempts to work with these older clients by handling the byte-order-mark in the server and having the server produce digests which these older clients will expect. Operation with utf8 files and these older clients will skip proxy caching also. These older clients assume the BOM is present for the utf8 filetype, while 2015.2 and later clients can adapt to a BOM being present or not. #1484153 (Job #89648, #89890) ** The db.sendq entries for a failed parallel sync are now immediately removed from db.sendq. #1471146 (Job #89336) ** 'p4 add ...' could generate many "Error object passed to database" errors and fail to terminate when MaxScanRows or MaxLockTime has been reached. This could also happen with 'p4 reconcile' or 'p4 status'. This behavior has been fixed. #1464985 (Job #89311) ** The fetch/push/unzip commands might incorrectly declare a file conflict for a file which was moved multiple times, to different destinations, during its history. #1464821 (Job #16821, #89204 ) * ** The configurable 'filesys.checklinks' may fail to prevent files from being added when files are symlinks to directories. This has been fixed. Also, this configurable is now honored for 'p4 reconcile' when detecting files to be added. #1463567 (Job #86424) ** Edge Servers might halt replicating if an obliterate command was run concurrently with a very large populate or submit command. #1458557 (Job #89052) ** A forwarding replica with lbr.replication=shared will no longer attempt to update the (shared) archive area during the file transfer phase of a forwarded 'p4 submit'. The cache-on-submit behavior is still present for forwarding replicas with lbr.replication set to either readonly or cache. #1455848 (Job #88980) ** In replica chaining configurations, replicas which were not directly connected to the master server were not processing archive deletion operations arising from operations such as submission of a binary+S file, deletion of a shelf, obliteration, archive depot operations or retype +l commands. #1417603 (Job #87802) ** The very first 'fetch -t' command issued against a server will auto-create the 'tangent' depot in that server. Subsequent commands issued by that same network session would get errors if they referred to the tangent depot. #1412767 (Job #87638) * The 'p4 init' command would write a small number of journal records to the end of the file specified by P4JOURNAL, if set. The local server initialization is now performed with -J off. #1411325 (Job #81360) ** A 'p4 fetch' command which transferred both a text (RCS) file whose archive was already present in the destination server and a lazy copy of that file, would leave the lazy copy corrupt. 'p4 verify' would report 'MISSING!' and requests for the file's content would report 'RCS checkout failed!'. Bugs fixed in 2015.2 Patch 10 #1410745 (Job #87181) ** Correct the digest used to ensure that content is transferred correctly to commands within triggers (such as a 'change-content' trigger) when submitting a shelf. A shelf is implicitly submitted to the commit server when a submit is run on an edge server. #1407749 (Job #87327) ** Deleting a pending change with an Identity, or deleting an empty committed change with an Identity, incorrectly failed to delete the database record in the db.changeidx table. #1379774 (Job #86262) ** Improve performance around structured logs. Log writers will now only acquire a shared lock on the 'logrotate' server meta lock when there are actually writes to the structured logs. #1379621 (Job #85991) ** Report to stderr (except on Windows), and syslog or the event log (as supported by the platform), any errors encountered when writing to the server log or a structured log. #1378294 (Job #86222) ** Following a 'fetch -t' command, the 'resubmit' command must be used, with the '-R' flag to resume after any merge conflicts are resolved, to coordinate the resubmit of the tangented changes. The 'submit' command now checks for an accidental attempt to submit a change that should have been run as 'resubmit -R', and issues a message rather than allowing the submit. Bugs fixed in 2015.2 Patch 7 #1376672 (Job #86041) ** Change handling of utf8 server type files when working with clients <= 2015.1. For these clients, the utf8 type files are treated as server type text, so as to avoid any additional line-ending. These files will not have associated BOMs (Byte order marks) when they are synced in this case. This has no bearing with clients >= 2015.2. Bugs fixed in 2015.2 Patch 6 #1365919 (Job #85680) ** Improve concurrency around structured logs. Log writers will now acquire a shared lock instead of an exclusive lock on the 'logrotate' server meta lock to block log rotations. #1364433 (Job #75866) ** Change 996993 is reverted, as the performance impact was large. #1362592 (Job #85371) ** 'p4 sync --parallel=..' using multiple file arguments could fail to transfer some files if any of the file paths did not contain enough data to use parallel threads. This has been fixed. #1362520 (Job #85376) ** Fix for false database corruption error when long descriptions are updated concurrent to readers reading the same description. #1360523 (Job #75135, #75136, #71853, #85501) ** Parallel sync and submit commands will not fail when net.parallel.max is unset or the requested number of parallel threads exceeds net.parallel.max. Instead the command will proceed without using parallel threads, or will use the max number of allowed threads. In these cases an informational message will also be written to the log. #1361611 (Job #85526) ** Running 'p4 integ' with a non-existent stream path as the target could cause the server to crash. This has been fixed. #1361611 (Job #85431) ** On Windows, parallel LDAP connections could cause a deadlock when the TLS encryption method was in use. This has been fixed; however, it has been noted that the SSL encryption method performs better on this platform. #1356487 (Job #85335) ** Running 'p4 reconcile' with the illegal syntax '#have' was not being rejected. #1355499 (Job #85346) ** Fixed a memory leak in 'p4 verify'. #1354073 (Job #85278) ** A command running on a replica could fail to transfer an archive file from the master server, reporting that the file was corrupted, if the file was a compressed binary filetype and if the replica had chosen to transfer the file without uncompressing and recompressing it. This problem was introduced by #1020818. #1352556 (Job #85157) * The MacOSX command line client could fail to complete a parallel sync if two or more parallel transfers attempted to create the same directory in the filesystem at the same time; the failing file transfer would print: "mkdir: /path/to/dir: File exists". #1352392 (Job #84992) ** Failure from an edge-content or edge-submit trigger during 'p4 submit' using the 'leaveunchanged' option could cause the server to crash. This has been fixed. #1352019 (Job #77782) ** The archive deletion journal records for archives deleted by certain shelve and submit command forms are now written in individual journal transactions, which can improve the responsiveness of replicas waiting for the archive deletion to complete. #1349577 (Job #84432) ** Failure from an edge-content or edge-submit trigger during 'p4 submit' using the 'leaveunchanged' option could cause the server to crash. This has been fixed. Bugs fixed in 2015.2 Patch 5 #1338051 (Job #84848) ** * 'p4 -Zproxyverbose sync --parallel=...' now correctly displays the diagnostic information about which files were delivered from the proxy's cache. #1335441 (Job #84810) ** 'p4d -c ' uses classic lock order not the new lockless lock order. Fixed. #1335427 (Job #84710) ** The fix for bug 70118 is generalized, and now applies to all server platforms. #1332929 (Job #84705) ** A failed 'p4 fetch' or 'p4 push' operation now removes any archive files which it copied to the destination server prior to the failure. Bugs fixed in 2015.2 Patch 4 #1323787 (Job #84421) ** 'p4 integ' could scan the database table db.locks unnecessarily under certain conditions. #1323707 (Job #84436, #84437) ** 'p4 journals' now displays the full error message text for a failed checkpoint or journal entry. Also, if a checkpoint failed due to the checkpoint filesystem being mounted read-only, a checkpoint-failed entry is now written in db.ckphist. #1323256 (Job #84441) * 'p4 clone' would mis-handle depot file paths containing spaces. Bugs fixed in 2015.2 Patch 3 #1319572 (Job #74317) ** 'p4 annotate' truncates very long lines. In some cases the output stream is not correctly terminated after the truncation and random data or nulls may be appended. #1318741 (Job #84229) ** 'p4 submit' of changes with thousands of files from an Edge Server had degraded performance in the earliest releases of 2015.2 due to inefficiencies from the new global locking feature. This has been fixed. #1318264 (Job #84035, #84188) ** In a federated server environment 'p4 unshelve' of moved files may cause orphaned exclusive lock entries that show up with 'p4 opened -x'. #1318264 (Job #84194) ** In a federated server environment when running directly against the commit server not all exclusive locks for open files were taken. #1315969 (Job #84027) ** Explicit rebuild of havemaps utilising 'p4d -xU BuildHaveMaps' would drop all ChangeView fields found in client specs. This has been fixed. #1313674 (Job #84022) ** A replica server which was started up at a moment when its master server was down or unreachable would fail to start correctly, and would print an incorrect error message about archive filesystem configuration in the replica log. #1313390 (Job #84023) ** The 'p4 zip -A' command could fail to include all the necessary archive files, leading to an "archive entry missing" error when running 'p4 unzip -A' subsequently. Bugs fixed in 2015.2 Patch 2 #1310642 (Job #83924) ** Fixed a rare crash in 'p4 interchanges'. #1305592 (Job #83604) ** Edge servers fail client authentication when net.mimcheck=5. Bugs fixed in 2015.2 Patch 1 #1258290 (Job #83276) ** ChangeViews were not being honored in Stream import+ path definitions. Various commands were not honoring at the designated change, and submits to the target were being allowed - when the ChangeView should make the target read-only. This has been fixed. #1256052 (Job #81415) ** Edge servers replicating an obliterate from a commit server could write unnecessary journal delete records for local labels. #1256002 (Job #81478) ** Submitting an 'open' stream (new in this release) would lock the db.domain table for longer than necessary. #1255960 (Job #81403) ** A DVCS 'fetch -t' command which encounters an internal error relocating the conflicting changes will no longer loop forever retrying the failed change relocation. Bugs fixed in 2015.2 #1361611 (Job #85526) ** Running 'p4 integ' with a non-existent stream path as the target could cause the server to crash. This has been fixed. #1361611 (Job #85431) ** On Windows, parallel LDAP connections could cause a deadlock when the TLS encryption method was in use. This has been fixed; however, it has been noted that the SSL encryption method performs better on this platform. #1245120 (Job #81186) ** With 'peeking' enabled and a very high submit concurrency rate, the maxCommitChange counter may get updated in the wrong order by a DVCS fetch or push command. The bug might cause some transient inconsistency (most likely with aggressive automation that tracks submits). #1244865 (Job #77040) ** Large fech/push operations are now more concurrent. Specifically, the write lock on the db.counters table is held for a much shorter duration. #1242773 (Job #81040) ** The server.locks.archive configurable introduced by #898102 now also applies to the 'p4 restore' command. #1239015 (Job #80722) ** A file which was integrated from a streams depot to a local depot, or vice versa, would be placed into the wrong location in the proxy cache if it was accessed via the proxy by a command such as 'p4 sync' or 'p4 print'. Note that the symptom of this bug is in the proxy cache, but the fix is in the server. #1236012 (Job #80864) ** A mistake in the 'p4 remote' file mapping lines will no longer allow a 'p4 fetch', 'p4 push', or 'p4 zip' command to generate filenames with illegal depot syntax. #1235448 (Job #80818) ** If a fetch, push, or unzip command imported a move/delete revision which was created by a pre-2013.1 server, and the revision of that file immediately prior to the move/delete revision was an integration from a location which was not covered by the remote map used by the fetch/push/unzip command, the metadata for the move/delete revision could be damaged. #1231617 (Job #74532 ) ** A 'p4 client' command of a stream client which generates no views due to exceeding map.joinmax1 will now display an appropriate message. #1228456 (Job #73450) * Concurrent p4 login and p4 logout commands could loose tickets in the P4TICKETFILE. Similar problems are possible with concurrent p4 trust commands. Fixed by creating a .lck lock file next to the ticket file to avoid the concurrent login problem. This .lck file will be removed if it is several minutes old. #1228149 (Job #80494) ** A change with a missing db.desc record could cause a server crash if that change was accessed by a fetch, push, or zip command. #1227692 (Job #80086) ** Correct high ascii character handling when the Windows Server is in unicode mode, related to long file name handling. #1227632 (Job #80379) * ** On Windows an uninitialized variable could cause a file rename to fail. This has been corrected. #1225187 (Job #74936) ** A 'sync --parallel' command issued via a forwarding replica would complete immediately, but would sync no files. #1223646 (Job #80332) ** If a fetch/push command was issued with a Commit Server or Edge Server as the destination of the fetch/push, and the set of files being copied included some files of type +l, and the command was interrupted or cancelled (e.g., using ^C), then the files of type +l were left exclusively locked by a client with an invalid client name (the name was wrongly prefixed by a double slash). #1214354 (Job #78784) ** Submitting to a combination of task stream path and Import+ path in the same changelist is not allowed, but not prevented. This change catches the combination and rejects the submit, the user has to resubmit changes to the filepaths in separate submits. #1203118 (Job #79647, #79739) ** p4d -jr would mis-handle the revStatus field if replaying db.rev journal records written by a 2005.2 or older server, and would mis-handle the mount2, mount3, stream, serverid, and partition fields if replaying db.domain journal records written by a 2002.1 through 2004.2 server. #1202710 (Job #44639, #63140, #74807) ** The verify command now supports the -S flag to specify that shelved files are to be verified. This flag can also be combined with the -t flag on a replica to schedule the transfer of any missing or damaged shelf archives from the master server. #1199869 (Job #79507) ** LDAP connections are now reused were possible to avoid unnecessary overhead. #1172454 (Job #79504) ** A submit initiated on an Edge Server which failed due to a problem detected after the edge-content trigger had been checked could leave the changelist incorrectly marked as "shelved", and possibly also as "promoted", on the Commit Server, although the changelist was correctly recorded on the Edge Server itself. #1172019 (Job #79473) *** ** * The Windows support for filenames longer than 260 characters will now handle highbit ascii characters correctly. #1171745 (Job #75750) ** The replica server now makes an attempt to detect an incorrect configuration of the lbr.replication setting. #1144449 (Job #77333) ** The configurables 'P4NAME', 'db.replication' and 'lbr.replication' may no longer be set globally; a serverid must be specified. #1142007 (Job #79341) ** Since change 1017756, in a Commit/Edge configuration, when 'p4 shelve -d' deleted a promoted shelf, the fix records for jobs which were attached to the pending changelist were incorrectly removed. #1130240 (Job #79361) * 'p4 reconcile' could crash the client when run with a unicode server if filenames have unmapped unicode characters. This has been fixed. #1130149 (Job #73821) ** Unloading or deleting clients could leave abandoned shelves on servers. This change allows an admin user to force delete '-df' a shelf that has been left in this state. #1128864 (Job #70118,#70738) ** Windows servers using the serverlog.maxmb setting will no longer generate duplicate server log files when rotation occurs under heavy load. As a result of this change, server lockfiles under the 'server.locks/meta' subdirectory are no longer stored in numbered subdirectories, so the lockfiles will be named 'server.locks/meta/db', 'server.locks/meta/journal', etc. #1128635 (Job #79104) ** Since change 616010, the 'p4 sync' and 'p4 integrate' commands have been enforcing the MaxResults limit, if set, on the size of the intermediate results of the sync or integrate command, which could in some situations mean that the user's MaxResults setting had to be large enough to contain their entire have list. Now the MaxResults limit is enforced only on the size of the final results of the sync or integrate command. #1127279 (Job #79353) ** A 'sync --parallel' command which sync'd any files of type 'binary' would write an incorrect value for the 'type' field of the db.have record for the binary file(s). This could cause problems later when integrating changes into these files from other branches. Any workspaces potentially affected by this bug should be sync'd to revision #0 and then re-sync'd for all files of type binary at their convenience in order to rewrite the db.have records. #1123323 (Job #74970) ** Structured log entries for commands that have passed through a proxy now log both the originating client's IP address and the IP address of the last proxy server. This is stored in the same format as the server log: 'client/proxy'. Setting 'log.originhost=0' will cause the structured log to only log the IP address of the last proxy server, like previous releases. #1099636 (Job #78495) ** When relocating a client from one edge server to another using unload/reload, any unpromoted shelves of the moved client would no longer be accessible on the server they reside. #1098936 (Job #77687) ** The 'p4 init' and 'p4 clone' commands can now be used from a directory with a name containing one of the Perforce wildcard characters (@/#/%/*). #1098709 (Job #74268) ** For 'p4 sync --parallel', 'min=N' now defaults to 9, and 'minsize' now defaults to 576 KB. #1098514 (Job #76009) ** The P4Admin depot deletion tool no longer reports the 'Can't snap active task stream files' error when deleting an empty depot which has no relationship to any active task streams. #1072106 (Job #79234) ** 'p4 fetch' and 'p4 push' now correctly purge old archives when importing new revisions of a file of type +S. #1071810 (Job #71853, #75135) ** 'p4 sync --parallel' and 'p4 submit --parallel' would report a misleading error message when the number of threads requested exceeds the configurable 'net.parallel.max'. This has been fixed. #1070381 (Job #79139) ** The zip file written by 'p4 zip -A' was missing archive content for branched files if the '-r' flag was omitted. #1070377 (Job #79171) ** A 'p4 fetch/push/unzip' command on a highly active server could diagnose conflicts incorrectly. #1070043 (Job #78498) ** The temp file created when a trigger is run from the depot now preserves the original file extension since some script engines refuse to run the file otherwise. #1069734 (Job #79181) ** The error message issued by change 696998 is improved to more clearly describe the reason that the file can't be archived. #1068648 (Job #79162) ** Replica servers wouldn't log the completion of some commands that run on the replica before being forwarded to the master. #1068615 (Job #57220) ** Protocol variable names are now case-insensitive. #1065877, #1067450 (Job #79100, #79035) ** The configurables 'rpl.forward.all' and 'rpl.forward.login' now only affect replica servers. Additionally, replica servers will no longer start if P4TARGET is not provided. #1067300 (Job #76977) ** A fetch command which was interrupted before completing could leave corrupted RCS archive files on the destination server. #1065376 (Job #77360) ** In a distributed configuration, the 'edit -n' and 'delete -n' commands for a file of type +l might incorrectly report that the file was opened by another user, though it was not. #1065313 (Job #76987,#77274,#79028,#79029,#79036) ** 'p4 push' and 'p4 fetch' could mishandle file locks. In some cases, they would report locking conflicts when no such conflict existed; in other cases they would fail to detect locking conflicts. When 'unlock -r' was used to unlock files after a failed push, it would leave them open. 'p4 push' was incorrectly allowing a push to be initiated by a workspace which exists in the destination server. In some cases, 'p4 unlock -r' could crash. #1063251 (Job #78965) ** 'p4 fetch' on a case-insensitive server would fail with a file transfer error when fetching multiple revisions of a file of type text if the revision names differed in case. #1061247 (Job #78830,#78915) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly write its own journal file under conditions of high concurrency on the master, resulting in incorrect behavior and problems with replicas of this replica. #1060249 (Job #78781#78812) ** p4 push/fetch/unzip now correctly detect the conflict if a file is moved simultaneously on two different servers to different destination filenames. #1059769 (Job #78855) * ** 'p4 sync --parallel' now works with certain custom licenses. #1058411 (Job #78785) ** If a replica with rpl.checksum.change set to 2 or higher encountered an internal error processing a changelist checksum note, it would halt replication. Now, it logs the error but resumes replication. #1057142 (Job #75822) ** The commands 'p4d -jd', 'p4d -jv', 'p4d -xv', and 'p4d -xx', if issued on a read-only copy of a server configured with one or more structured server logs, would issue incorrect messages about permissions errors on the structured server log files. #1056616 (Job #26763,#26824,#61456,#70297) ** Some integer overflow problems in the display of server performance tracking data to the server log have been addressed. Tracking log data for extremely large queries will now display accurate results. #1055820 (Job #72351) ** A Windows server installed as a Windows Service, which has been given a server.id which does not match the Windows Service Name, will now use the server.id as its name in preference to the Windows Service Name. #1054521 (Job #70899) ** On a server with a spec depot configured, if the spec depot archive file cannot be written, the spec revision is now marked as purged. #1054354 (Job #56725) ** A 'p4 print' of a binary file, if it did not specify -o, and did not go through a proxy or forwarding replica, would send the wrong message if the archive file was missing on the server. Instead of sending a 'file not found' message to the client, it would send "Operation 'client-OutputBinary' failed." #1054186 (Job #73951) ** Shelving a file that is open for integrate from a revision that is hidden by the client's ChangeView will no longer produce an error. #1050954 (Job #78647) ** On an Edge Server with submit.unlocklocked=1, a submit which fails with "Out of date files must be resolved or reverted" could incorrectly alter the resolve state of the open files if the conflicting change was submitted simultaneously. #1050337 (Job #78593) ** Spec update commands now enforce filesys.P4ROOT.min and filesys.P4JOURNAL.min. #1047418 (Job #78444) ** The replica-specific table db.user.rp is now journaled. This means that the table data will appear in checkpoints, journals and dumps. The replica pull thread automatically filters out all db.user.rp records from its P4TARGET server, which is normally the desired behavior, since records in this table are unique to each replica's activity. However, for maintaining warm standby replicas of other replicas, you can set rpl.replay.userrp=1 for the standby replica to disable the filtering and replicate db.user.rp data. #1046909 (Job #77390, #77461) ** The 'p4 change -d -f' and 'p4 client -d -f' commands now perform more argument checking in a distributed configuration. If a client is bound to a different server, 'p4 client -d -f' no longer allows that client to be deleted, and 'p4 change -d -f' no longer allows that client's pending changes to be deleted. In order to override these checks, the 'p4 change -d -f' and 'p4 client -d -f' commands now accept the '--serverid=X' flag, which can be specified when running these commands on the Commit Server to force the deletion of clients and their changes which are bound to an Edge Server. #1046908 (Job #78471) ** The 'p4 info' command now includes information about the server services, if this server has a 'p4 server' spec, and about the replica target, if this server is a replica. This information was previously present only when the tagged form of 'p4 info' was used. #1046060 (Job #73967) ** 'p4 -ztag servers' could report incorrect values for the 'User' field for server specs upgraded from an older release. #1045565 (Job #78497) ** Promoting a shelf, then subsequently deleting it, using the same network connection to the Edge Server could fail to properly delete the shelf. #1042783 (Job #78427) * 'p4 -P sync --parallel' will no longer give authentication errors for the file transfer sub-processes. #1042222 (Job #68933) ** Fixed unpromoted changelists being omitted from "p4 changes" output for large task streams. #1042162 (Job #77612) ** Fixed spurious "can't purge active task stream files" when running obliterate with a narrow revision range across a wide depot path. #1040989 (Job #77820) ** Increased the default value of 'net.backlog' from 10 to 128 to make the server more resilient to heavy usage spikes. #1039831 (Job #73075, #74961) ** The revision specifier @client was not working properly for clients bound to a build-server. #1039277 (Job #78383) ** A 'p4 describe' command which accesses a remote promoted shelf now properly reports any communications-related error conditions which occur when retrieving the remote shelf. #1039178 (Job #77617) ** 'p4 resubmit' can now resubmit an unsubmitted change which involved the oldest non-purged revision of a file of type +S. #1070355 (Job #77551) ** 'p4d -i' when run under inetd on unix no longer shows 'unknown' for all addresses. #1037755 (Job #76982) * If a 'p4 sync --parallel' child process encounters an error writing files to the local machine, the parent 'p4 sync' command now returns a non-zero exit status to the operating system. #1037679 (Job #78142) ** The 'p4 admin resetpasword' command now allows the passwords of users who authenticate against the Perforce database to be reset when LDAP authentication is enabled. #1037486 (Job #76283) ** Performance of 'p4d -z -jv ' is substantially improved. #1140112 (Job #71839) ** When 'p4 shelve -d -c NNN' was used on an Edge Server to delete a promoted shelf, an error message 'Change NNN unknown' was incorrectly reported in the Edge Server log. #1037192 (Job #78009) ** It is no longer allowed to create a client named _____CLIENT_UNSET_____. Any existing client by this name can still be used, but you should plan to delete such a client (if you have created one) as soon as possible, for it can interfere with the use of P4V against this server. #1036485 (Job #77069) ** A 'p4 describe -S' command on an Edge Server which specified more than 1 promoted shelf which was created on a different Edge Server would fail with an 'Unknown changelist' message. #1036596 (Job #77433) ** In a distributed configuration, 'p4 unshelve' no longer takes the global exclusive file lock for a file of type +l which is unshelved for add. #1035121 (Job #78036) ** The 'p4 attribute' command is not allowed on a server which was created by 'p4 init'; also, when a revision is copied to another server by the 'p4 fetch', 'p4 push', or 'p4 unzip' commands, its traitLot field is automatically cleared in the destination. #1034765 (Job #75636) ** A server which has a P4NAME, but does not have a server.id file, will now read the configuration information from the server spec with ServerID = , if such a server spec exists. #1032558 (Job #78084) ** 'p4 push -n -v' and 'p4 fetch -n -v' no longer report that changelists to be pushed/fetched would be renumbered as change #0. #1032010 (Job #74056) ** 'p4 sync --parallel' would fail to expand RCS keywords properly. #1031176 (Job #76013) ** 'p4d -xx db.working db.have' could create spurious delete records for db.working if a file opened for move or delete is subsequently moved and submitted by another client and the opened file is then synced to the head revision. #1030772 (Job #77871) ** 'p4 -ztag pull -l -s' now provides tagged output. #1030313 (Job #77559) ** A build-server replica would incorrectly process the View: field for labels, causing the wrong set of revisions to be specified by the label. #1028751,#1204292 (Job #56707) ** The presence of a client spec with the same name as the TCP/IP address of a replica machine no longer causes that replica to issue the error: "Don't know how to translate paths for OS ''". #1028372,#1028461 (Job #77558) ** A replica with lbr.replication=cache was not able to access labels using the autoreload option. #1027668 (Job #77595) ** 'p4 export -f' now formats the domain type column correctly for unloaded clients, unloaded labels, and unloaded task streams. #1026707 (Job #77504) ** * 'p4 -Zproxyload sync --parallel=...' now correctly updates the proxy's archive cache without sending files to the client. #1026534 (Job #77280) ** If a change submitted via an Edge Server was rejected by a change-submit or change-content trigger on the Commit Server, the change's files were modified to read-only mode on the client machine rather than being left in writable mode. #1026233 (Job #77435) ** A 'p4 integ' or 'p4 unshelve' command on an Edge Server which failed to open a +l file due to a client-side file transfer error would leave an orphaned lock record in db.excl. #1025869 (Job #77886) ** A parsing problem with the 'p4d -i' flag is resolved. #1025619 (Job #77726) ** 'p4 unsubmit' commands which have multiple arguments, and which terminate due to an error while processing an argument other than the first, now correctly sync the workspace with all the work that was successfully unsubmitted prior to that error. #1025545 (Job #77656, #77672) ** Audit log records for the push, fetch, zip, and unzip commands, in both the structured audit log and the P4AUDIT log, now have improved precision and additional detail. #1025484 (Job #77626) ** The 'p4 unsubmit' and 'p4 resubmit' commands are not available on an Edge Server, and issuing them against an Edge Server now gives an error message. #1025380 (Job #77326) ** 'p4 zip' no longer creates an empty zip file if the specified fileset is empty. #1024502 (Job #77719) * The 'p4 init' or 'p4 clone' commands, when they connect to a shared server, would cause log records to be written as an "unknown" client program and "unknown" program version. #1011878 (Job #77507) ** Integrate now reports "integrated in pending changelist" when repeatedly integrating into a moved file. #1002449 (Job #77266) ** On a replica server, 'p4 monitor show' incorrectly displayed paused background threads as terminated, and 'monitor show -s P' didn't display paused background threads at all. #996993 (Job #75866) ** A replica which has ArchiveDataFilter specified in its server spec will now pull archive contents for lazy copied files which satisfy the filter. #996812 (Job #76749) ** On a Windows server, a depot with Map: field specified using Windows-style path syntax (E:\depot\...) could not be deleted with depot -d even though the directory was in fact empty. #998869 (Job #73278) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly report that a changelist checksum differed if the changelist was submitted by a workspace with SubmitOptions = revertunchanged and at least one unchanged file was reverted during the submission of that changelist. -------------------------------------------------------------------------- Major new functionality in 2015.1 #877419 ** * DVCS workflow support has been added to Perforce. Use this new functionality to accomplish the following goals: 1) You can create a 'personal server' that you can use to manage versioned content all by yourself, without interacting with any other Perforce server unless you want to. 2) You can copy work between Perforce servers to implement various collaboration workflows. 3) You can rewrite and revise history to discard unwanted intermediate information. Use the 'p4 init' command to create a new personal repository, or use the 'p4 clone' command to create one with files from an existing server. Use the 'p4 switch' command to create new streams, and to switch back and forth between existing streams. Use the 'p4 fetch' and 'p4 push' commands to copy work back and forth between servers, either peer-to-peer or in a hub-and-spoke or hierarchical arrangement. Use the 'p4 remote' and 'p4 remotes' commands to manage connections to multiple partner repositories. Use the 'p4 unsubmit' and 'p4 resubmit' commands to rewrite and revise history prior to pushing that work to other servers. The new fetch, push, and unsubmit functionality is disabled by default, even after upgrading your server executable to 2015.1. To enable the new functionality, you must set the 'server.allowpush', 'server.allowfetch', and/or 'server.allowrewrite' configurables to enable the desired level of operation. New trigger types and trigger variables are available. See 'p4 help dvcs' for complete information. #856900 ** Compression of db.have table. By encoding the depot path field with an offset into the client path field, db.have records have been reduced by up to 35%. Checkpoint and journal files will continue to have the expanded form. This space saving will happen over time as clients get resynced. Admins who regularly restore from a checkpoint will notice this the first time the table is restored. Minor new functionality in 2015.1 #1010616 (Job #77331) ** The server spec has a new field, 'ExternalAddress', to specify the external address on an edge server that is used for connections from a commit server. Although it is an optional field, it must be set in the edge server spec in order for parallel submit commands to work in a federated environment. #986989 (Job #53185) * ** 'p4 submit' now accepts the '--parallel' flag, to specify that multiple files should be transferred in parallel, using independent network connections from automatically-invoked child processes. In order to run a parallel submit, the configurable net.parallel.max must be set to a value greater than 1. #976359 (Job #76507) ** The 'p4 unlock' command now includes the -r flag to allow unlocking files left locked by a failed 'p4 push' or 'p4 fetch' command. #969791 (Job #75172) ** Peek locking information now reported along with normal lock information #968391 (Job #74665) ** 'p4 rec' is a now a synonym for 'p4 reconcile'. #967271 (Job #75557) ** Now 'p4 status' displays files already opened in addition to files that need to be reconciled. #966422 (Job #75520) ** New command 'p4 admin setldapusers' allows a super user to update all non-super, standard users to use LDAP authentication in a single command. #965070 (Job #76237) ** Previously 'p4 servers' and 'p4 servers -J' could not be run by an operator. Now an operator can run the 'p4 servers [-J]' commands, which allow operators to monitor the replication status of a group of replicas. #964882 ** 'fstat -Oh' is now lockless on db.rev and db.revtx at db.peeking=3. #964603 (Job #55582) ** Previously 'p4 journalcopy' and 'p4 pull' could be run only by a superuser. Now an operator can run 'p4 pull -l -j', 'p4 pull -l', and 'p4 journalcopy -l'. This allows operators to monitor the replication status of a replica. #963443 (Job #65298, #74627) ** The new 'mergeany' stream option allows flow rules for 'p4 merge' to be ignored for a particular stream. The default option of 'mergedown' preserves the previously existing flow rules. Streams created by 'p4 switch' on a personal server use 'mergeany'. #963085 (Job #75519) ** The LDAP automatic user creation feature enabled as part of setting 'auth.default.method' to 'ldap' has been moved to a new configurable 'auth.ldap.userautocreate'. In order to allow 'p4 login' to create user automatically after successful authentication against an LDAP server, the 'auth.default.method' configurable must be set to 'ldap' and the 'auth.ldap.userautocreate' must be set to 1. #962982 (Job #75562) ** New simpler syntax for 'p4 merge' with streams. If no arguments are specified, the target defaults to the current stream, and the source defaults to the current stream's parent. A different source can be specified with '--from STREAMNAME', which is an alias for '-P'. The stream may be specified as a directory name relative to the current stream depot, e.g. '--from main' instead of '--from //Ace/main'. #962680 (Job #19474) ** New command 'p4 ldapsync -g' updates Perforce groups' users list to match the members of an LDAP group. This requires LDAP fields on the group specifications to be set for any group that is to be synchronized with an LDAP group. #959007 (Job #75748) ** The read-only LDAP search user's password is no longer stored in cleartext in the LDAP configuration spec files. #952949 ** 'p4 sync' will now automatically resolve files where the previously synced version does not differ from the newer depot revision. #946084 (Job #64757) ** 'p4 revert' now supports a new flag '-C client'. This flag allows a user with admin privilege to revert files opened in another client. #938958 (Job #4063) *** ** * The Windows platform can now support filenames longer than 260 characters. The filesys.windows.lfn=1 tunable must be set where ever this functionality is required, Client and Server. #936955 (Job #75207) ** 'p4 reconcile' will now detect files that are open for delete but are physically present on the client, and reopen them for edit. #930083 (Job #71699) ** 'p4 interchanges' now reports changes that consist solely of 'ignored' integrates if those changes have not yet been integrated into the target. #907436 ** The new '-r' flag for 'p4 sync' permits pending work to be carried over to a different file when the client view is changed. For example, pending work can be moved to a different stream by running 'p4 client -f -s' followed by 'p4 sync -r'. #901864 * ** 'p4 status -s' previews files needing reconcile, but lists files to be opened for add in subdirectories rather than individually. #900158 (Job #68860) ** 'p4 add' now traverses the workspace when given a file argument containing '...', similar to 'p4 reconcile -a'. #897834 (Job #74382) * 'p4 -G' now accept marshalled inputs from Python version 3 or later. #861918 (Job #72999) ** An unnecessary update to the db.locks table has been removed from the file transfer phase of 'p4 submit'. Bugs fixed in 2015.1 #1463567 (Job #86424) ** Edge Servers might halt replicating if an obliterate command was run concurrently with a very large populate or submit command. #1458557 (Job #89052) ** A forwarding replica with lbr.replication=shared will no longer attempt to update the (shared) archive area during the file transfer phase of a forwarded 'p4 submit'. The cache-on-submit behavior is still present for forwarding replicas with lbr.replication set to either readonly or cache. #1455848 (Job #88980) ** In replica chaining configurations, replicas which were not directly connected to the master server were not processing archive deletion operations arising from operations such as submission of a binary+S file, deletion of a shelf, obliteration, archive depot operations or retype +l commands. #1419606 (Job #87773) ** An optimization in 'p4 integrate' for directly related files was broken by change 901775, causing some integrates to take longer than necessary in the presence of large numbers of branches. Fixed. #1412767 (Job #87638) * The 'p4 init' command would write a small number of journal records to the end of the file specified by P4JOURNAL, if set. The local server initialization is now performed with -J off. #1411325 (Job #81360) ** A 'p4 fetch' command which transferred both a text (RCS) file whose archive was already present in the destination server and a lazy copy of that file, would leave the lazy copy corrupt. 'p4 verify' would report 'MISSING!' and requests for the file's content would report 'RCS checkout failed!'. Bugs fixed in 2015.1 PATCH17 #1410678 (Job #87181) ** Correct the digest used to ensure that content is transferred correctly to commands within triggers (such as a 'change-content' trigger) when submitting a shelf. A shelf is implicitly submitted to the commit server when a submit is run on an edge server. #1395561 (Job #86855) ** Multi-threaded applications using the same connection could disrupt the flow control of long running commands like submit. This change prevents the server from executing any more callbacks as soon as the problem is detected. #1379035 (Job #86262) ** Improve performance around structured logs. Log writers will now only acquire a shared lock on the 'logrotate' server meta lock when there are actually writes to the structured logs. #1378935 (Job #85991) ** Report to stderr (except on Windows), and syslog or the event log (as supported by the platform), any errors encountered when writing to the server log or a structured log. #1365883 (Job #85680) ** Improve concurrency around structured logs. Log writers will now acquire a shared lock instead of an exclusive lock on the 'logrotate' server meta lock to block log rotations. #1352542 (Job #85157) * The MacOSX command line client could fail to complete a parallel sync if two or more parallel transfers attempted to create the same directory in the filesystem at the same time; the failing file transfer would print: "mkdir: /path/to/dir: File exists". #1341013 (Job #84992) ** If an archive file for a local shelf on an Edge Server should become damaged or missing, deleting the shelf, or deleting or replacing that file in the shelf, will now cancel any pending file transfer for that file which was listed in 'pull -l'. #1340637 (Job #77782) ** The archive deletion journal records for archives deleted by certain shelve and submit command forms are now written in individual journal transactions, which can improve the responsiveness of replicas waiting for the archive deletion to complete. #1337988 (Job #84848) ** * 'p4 -Zproxyverbose sync --parallel=...' now correctly displays the diagnostic information about which files were delivered from the proxy's cache. #1335377 (Job #84710) ** The fix for bug 70118 is generalized, and now applies to all server platforms. #1332907 (Job #84705) ** A failed 'p4 fetch' or 'p4 push' operation now removes any archive files which it copied to the destination server prior to the failure. #1323224 (Job #84441) * 'p4 clone' would mis-handle depot file paths containing spaces. #1313382 (Job #84023) ** The 'p4 zip -A' command could fail to include all the necessary archive files, leading to an "archive entry missing" error when running 'p4 unzip -A' subsequently. #1312636 (Job #76913) ** 'p4 files ' when using a revision specifier other than #head (e.g. @label), or a revision range ending with a revision specifier other than #head, will now access the rev table in lockless mode. 'p4 files @label' will now also access the label table in lockless mode. 'p4 files @change,@change' will now also access the revcx table in lockless mode. And at 'db.peeking=3', 'p4 files ' will now access the rev table in lockless mode, even if not using a revision specifier or a revision range. Bugs fixed in 2015.1 PATCH10 #1250127 (Job #81342) ** Under certain conditions a 'change-failed' trigger could run while the parent 'submit' process was holding locks, this could cause a deadlock. #1249596 (Job #81329) ** 'p4 changes -s pending' could scan the db.workingx database table unnecessarily when a lot of restricted shelved changes are present. #1248997 (Job #79381, #79384) * ** *** With Windows long filename support enabled, submitting a text file with a depot repository name just over 260 characters in length could cause the submit to fail. #1247146 (Job #81257) ** 'p4 submit' from an edge server was incorrectly applying the shelve configurables 'dm.shelve.maxfiles' and 'dm.shelve.maxsize' as part of its file transfer process. #1244865 (Job #77040) ** Large fech/push operations are now more concurrent. Specifically, the write lock on the db.counters table is held for a much shorter duration. #1242778 (Job #81040) ** The server.locks.archive configurable introduced by #898102 now also applies to the 'p4 restore' command. Bugs fixed in 2015.1 PATCH9 #1240752 (Job #80943) ** 'p4 integrate' can suffer from performance problems (excessive db.revhx scanning) when using wildcards at a shallow depth. This has been fixed. #1239015 (Job #80722) ** A file which was integrated from a streams depot to a local depot, or vice versa, would be placed into the wrong location in the proxy cache if it was accessed via the proxy by a command such as 'p4 sync' or 'p4 print'. Note that the symptom of this bug is in the proxy cache, but the fix is in the server. #1236012 (Job #80864) ** A mistake in the 'p4 remote' file mapping lines will no longer allow a 'p4 fetch', 'p4 push', or 'p4 zip' command to generate filenames with illegal depot syntax. #1235448 (Job #80818) ** If a fetch, push, or unzip command imported a move/delete revision which was created by a pre-2013.1 server, and the revision of that file immediately prior to the move/delete revision was an integration from a location which was not covered by the remote map used by the fetch/push/unzip command, the metadata for the move/delete revision could be damaged. #1235330 (Job #80774) ** Improve security by increasing randomness in tickets generated by 'p4 login'. #1234699 (Job #79472) ** 'p4 copy' will no longer consider invisible charset metadata when determining whether two files are already identical. #1234699 (Job #80762) ** 'p4 resolve -at' between files with differing charsets will now copy the charset metadata even if server.filecharset is not set. This prevents the 'copy from' resolve record from downgrading to a 'merge from' due to the charset difference. #1228149 (Job #80494) ** A change with a missing db.desc record could cause a server crash if that change was accessed by a fetch, push, or zip command. #1225954,1226981 (Job #80379) * ** On Windows an uninitialized variable could cause a file rename to fail. This has been corrected. Bugs fixed in 2015.1 PATCH8 #1225954 (Job #80379) * ** On Windows an uninitialized variable could cause a file rename to fail. This has been corrected. #1225235 (Job #74936) ** A 'sync --parallel' command issued via a forwarding replica would complete immediately, but would sync no files. #1223646 (Job #80332) ** If a fetch/push command was issued with a Commit Server or Edge Server as the destination of the fetch/push, and the set of files being copied included some files of type +l, and the command was interrupted or cancelled (e.g., using ^C), then the files of type +l were left exclusively locked by a client with an invalid client name (the name was wrongly prefixed by a double slash). #1222805 (Job #72888, 80283) * ** *** When using SSL with an X.509 certificate whose key size is greater than 2048 bits, then servers and clients could crash or (possibly) exhibit other incorrect behavior while calculating the certificate fingerprint during connection establishment. Similarly, 'p4d -Gf' and 'p4p -Gf' could crash while calculating the certificate fingerprint. This has been corrected. #1218770 (Job #38284) ** Fixed a case where 'p4 annotate -i/-I' could perform excessive database scans and consume large amounts of memory with a combination of extensive integration history and a complex protection table. Bugs fixed in 2015.1 PATCH7 #1216917 (Job #80122) ** Change #1128864 addressing server log rotation issues on windows server platform introduced some instability into the server that could cause a recursive loop leading to a crash. #1216335 (Job #80086) ** Correct high ascii character handling when the Windows Server is in unicode mode, related to long file name handling. #1215896 (Job #78784) ** Submitting to a combination of task stream path and Import+ path in the same changelist is not allowed, but not prevented. This change catches the combination and rejects the submit, the user has to resubmit changes to the filepaths in separate submits. #1215836 (Job #79924) ** Extremely rare Btree problem would cause the p4d service to hang while database tables are locked. Fixed. #1213580 (Job #79647) ** p4d -jr would mis-handle the revStatus field if replaying db.rev journal records written by a 2005.2 or older server. Bugs fixed in 2015.1 PATCH6 #1204381, #1028849 (Job #56707) ** The presence of a client spec with the same name as the TCP/IP address of a replica machine no longer causes that replica to issue the error: "Don't know how to translate paths for OS ''". #1202710 (Job #44639, #63140, #74807) ** The verify command now supports the -S flag to specify that shelved files are to be verified. This flag can also be combined with the -t flag on a replica to schedule the transfer of any missing or damaged shelf archives from the master server. #1201560 (Job #79689) ** Files that have been renamed, copied over from unrelated files, and then deleted will now resolve automatically when integrated into other branches where none of those things have happened. #1178443 (Job #79473) *** ** * The Windows support for filenames longer than 260 characters will now handle highbit ascii characters correctly. #1172450 (Job #79504, #79402) ** A submit initiated on an Edge Server which failed due to a problem detected after the edge-content trigger had been checked could leave the changelist incorrectly marked as "shelved", and possibly also as "promoted", on the Commit Server, although the changelist was correctly recorded on the Edge Server itself. Bugs fixed in 2015.1 PATCH5 #1142007 (Job #79341) ** Since change 1017756, in a Commit/Edge configuration, when 'p4 shelve -d' deleted a promoted shelf, the fix records for jobs which were attached to the pending changelist were incorrectly removed. #1140112 (Job #71839) ** When 'p4 shelve -d -c NNN' was used on an Edge Server to delete a promoted shelf, an error message 'Change NNN unknown' was incorrectly reported in the Edge Server log. #1130584 (Job #79238) ** Searches for rename history when integrating renamed files will now stop once a common ancestor has been found. #1128864 (Job #70118,#70738) ** Windows servers using the serverlog.maxmb setting will no longer generate duplicate server log files when rotation occurs under heavy load. As a result of this change, server lockfiles under the 'server.locks/meta' subdirectory are no longer stored in numbered subdirectories, so the lockfiles will be named 'server.locks/meta/db', 'server.locks/meta/journal', etc. #1128635 (Job #79104) ** Since change 616010, the 'p4 sync' and 'p4 integrate' commands have been enforcing the MaxResults limit, if set, on the size of the intermediate results of the sync or integrate command, which could in some situations mean that the user's MaxResults setting had to be large enough to contain their entire have list. Now the MaxResults limit is enforced only on the size of the final results of the sync or integrate command. #1127296 (Job #79353) ** A 'sync --parallel' command which sync'd any files of type 'binary' would write an incorrect value for the 'type' field of the db.have record for the binary file(s). This could cause problems later when integrating changes into these files from other branches. Any workspaces potentially affected by this bug should be sync'd to revision #0 and then re-sync'd for all files of type binary at their convenience in order to rewrite the db.have records. #1126925 (Job #79178) ** A new configuration parameter 'rejectList' has been added to reject certain application/version combinations from the server. For example to reject the 2014.2 version of P4EXP: configure set "rejectList=P4EXP,version=2014.2,Operating System" Bugs fixed in 2015.1 PATCH4 #1099652 (Job #79317) ** Fixed a filename resolve base selection issue where a file had been moved back and forth on a series of ancestor branches while being intermittently copied over. #1099588 (Job #79249) ** The fix for Job #64713 has caused a regression with 'p4 reopen' behavior with default changelists. Consequently, change #782990 has been backed-out. #1098936 (Job #77687) ** The 'p4 init' and 'p4 clone' commands can now be used from a directory with a name containing one of the Perforce wildcard characters (@/#/%/*). #1098195 (Job #79298) ** Change #771609 introduced a performance regression with 'p4 filelog' that could cause excessive scanning of db.integed. #1097831 (Job #72558) ** * On Mac OS X, Perforce variables are no longer retrieved from user or system preferences in your Mac preferences folder. The Perforce variables on Mac OS X now behave in the same way as they do on other Unix-like platforms, including the use of P4ENVIRO files. This means that 'p4 set -s' no longer has any effect on Mac OS X. Bugs fixed in 2015.1 PATCH3 #1078790 (Job #79275) ** Fixed a case involving a remerge after various move, delete, re-add, and copies. #1071011 (Job #75098) ** 'p4 cstat' now runs (fully) lockless when peeking is set to 3. #1070381 (Job #79139) ** The zip file written by 'p4 zip -A' was missing archive content for branched files if the '-r' flag was omitted. #1070377 (Job #79171) ** A 'p4 fetch/push/unzip' command on a highly active server could diagnose conflicts incorrectly. #1070360 (Job #77551) ** 'p4d -i' when run under inetd on unix no longer shows 'unknown' for all addresses. #1070184 (Job #79180) ** LDAP authentication using the SASL bind method now uses /dev/urandom instead of /dev/random to avoid depleting the system's entropy pool. #1069094 (Job #79106) ** Running many concurrent 'p4 unzip' processes could cause a server crash and potential btree corruption. #1067856 (Job #79123) ** Fixed a case where renamed files might not match up with each other during an integrate if they were not branched from each other originally, but were instead subsequently copied over each other in a baseless integrate or copy. #1067584 (Job #79110) ** In a distributed configuration, 'p4 submit -e --parallel' run from an edge server would silently ignore valid parallel options and would run in non-parallel mode. This has been fixed. #1066073 (Job #79045) ** In a distributed configuration, the command 'p4 switch' could error with the message 'Slashes (/) not allowed in '. This would cause the switch shelf (stash) to not be deleted. #1065481 (Job #77360) ** In a distributed configuration, the 'edit -n' and 'delete -n' commands for a file of type +l might incorrectly report that the file was opened by another user, though it was not. Bugs fixed in 2015.1 PATCH2 #1063251 (Job #78965) ** 'p4 fetch' on a case-insensitive server would fail with a file transfer error when fetching multiple revisions of a file of type text if the revision names differed in case. #1062781 (Job #74254 ) ** Tagged output for 'p4 submit' from an edge server no longer generates duplicate entries for depotFile, rev, and change. #1062239 (Job #78917 ) * ** 'p4 submit --parallel' now works with certain custom licenses. #1062090 (Job #79018) ** 'p4 changes ' has been optimized by adding a flag to terminate processing at an end point '-e changelist'. #1061247 (Job #78830,#78915) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly write its own journal file under conditions of high concurrency on the master, resulting in incorrect behavior and problems with replicas of this replica. #1059780 (Job #78855) * ** 'p4 sync --parallel' now works with certain custom licenses. #1059694 (Job #78818) * Usernames containing backslash characters no longer cause 'p4 init' or 'p4 clone' to fail. #1058704 (Job #78785) ** If a replica with rpl.checksum.change set to 2 or higher encountered an internal error processing a changelist checksum note, it would halt replication. Now, it logs the error but resumes replication. Bugs fixed in 2015.1 PATCH1 #1051000 (Job #78647) ** On an Edge Server with submit.unlocklocked=1, a submit which fails with "Out of date files must be resolved or reverted" could incorrectly alter the resolve state of the open files if the conflicting change was submitted simultaneously. #1047834 (Job #78444) ** The replica-specific table db.user.rp is now journaled. This means that the table data will appear in checkpoints, journals and dumps. The replica pull thread automatically filters out all db.user.rp records from its P4TARGET server, which is normally the desired behavior, since records in this table are unique to each replica's activity. However, for maintaining warm standby replicas of other replicas, you can set rpl.replay.userrp=1 for the standby replica to disable the filtering and replicate db.user.rp data. #1046060 (Job #73967) ** 'p4 -ztag servers' could report incorrect values for the 'User' field for server specs upgraded from an older release. #1045565 (Job #78497) ** Promoting a shelf, then subsequently deleting it, using the same network connection to the Edge Server could fail to properly delete the shelf. #1042871 (Job #78427) * 'p4 -P sync --parallel' will no longer give authentication errors for the file transfer sub-processes. #1040963 (Job #78416) ** The new command 'p4 switch' was incorrectly forwarding when executed from an edge server. #1039853 (Job #73075, #74961) ** The revision specifier @client was not working properly for clients bound to a build-server. #1039277 (Job #78383) ** A 'p4 describe' command which accesses a remote promoted shelf now properly reports any communications-related error conditions which occur when retrieving the remote shelf. #1039178 (Job #77617) ** 'p4 resubmit' can now resubmit an unsubmitted change which involved the oldest non-purged revision of a file of type +S. #1037755 (Job #76982) * If a 'p4 sync --parallel' child process encounters an error writing files to the local machine, the parent 'p4 sync' command now returns a non-zero exit status to the operating system. #1037486 (Job #76283) ** Performance of 'p4d -z -jv ' is substantially improved. #1036596 (Job #77433) ** In a distributed configuration, 'p4 unshelve' no longer takes the global exclusive file lock for a file of type +l which is unshelved for add. #1036485 (Job #77069) ** A 'p4 describe -S' command on an Edge Server which specified more than 1 promoted shelf which was created on a different Edge Server would fail with an 'Unknown changelist' message. #1036167 (Job #76002) ** Stream 'import+' paths are not being referenced when the stream type is virtual. This was causing warnings on 'p4 edit' and a failure on 'p4 submit' of any files within these import+ paths. Fixed. #1035768 (Job #78164) ** In a distributed environment, the change-failed trigger now runs on the commit server rather than on the edge server. #1035121 (Job #78036) ** The 'p4 attribute' command is not allowed on a server which was created by 'p4 init'; also, when a revision is copied to another server by the 'p4 fetch', 'p4 push', or 'p4 unzip' commands, its traitLot field is automatically cleared in the destination. #1032010 (Job #74056) ** 'p4 sync --parallel' would fail to expand RCS keywords properly. #1031176 (Job #76013) ** 'p4d -xx db.working db.have' could create spurious delete records for db.working if a file opened for move or delete is subsequently moved and submitted by another client and the opened file is then synced to the head revision. #1033960 (Job #78106) ** In a distributed environment (edge/commit) promoting of shelves to the commit server could result in a long duration lock being held over multiple commands. This would be more visible when using P4V rather than the command line. #1033794 (Job #75637) ** 'p4 help administration' now lists the three LDAP related commands: 'p4 ldap', 'p4 ldaps' and 'p4 ldapsync'. #1032558 (Job #78084) ** 'p4 push -n -v' and 'p4 fetch -n -v' no longer report that changelists to be pushed/fetched would be renumbered as change #0. #1033412 (Job #78198) * ** *** Updated version of OpenSSL to 1.0.1m to address possible vulnerabilities: CVE-2015-0287, CVE-2015-0293, and CVE-2015-0288. #1032557 (Job #76351) Performance problems in a distributed environment exhibited by 'p4 submit' and 'p4 shelve -p' introduced by change 969974 is addressed. Specifically, file transfer time was degraded under conditions of high latency when submitting or promoting changes with many files. This problem that was introduced in the initial 2015.1 release has been fixed. #1032042 (Job #74056) ** 'p4 sync --parallel' would fail to expand RCS keywords properly. #1031202 (Job #76013) ** 'p4d -xx db.working db.have' could create spurious delete records for db.working if a file opened for move or delete is subsequently moved and submitted by another client and the opened file is then synced to the head revision. #1030772 (Job #77871) ** 'p4 -ztag pull -l -s' now provides tagged output. #1030698 (Job #77559) ** A build-server replica would incorrectly process the View: field for labels, causing the wrong set of revisions to be specified by the label. #1030610 (Job #77873) ** 'p4 protects -u' for a service/operator user was showing protects access to content, although service/operator users cannot be used to browse or update a repository. #1030042 (Job #77728) ** The 'min' argument of the '--parallel' options is now correctly enforced when submitting through an edge server. #1029907 (Job #78113) ** 'p4 switch' and 'p4 switch -l' were taking out an unnecessary client lock. #1029218 (Job #78099) ** 'p4 fetch' and 'p4 push' no longer cause an "unknown command" error when the remote server is a DCS node. #1028633 (Job #77558) ** A replica with lbr.replication=cache was not able to access labels using the autoreload option. #1028018 (Job #78012) Performance problems in a distributed environment exhibited by 'p4 submit' and 'p4 shelve -p' introduced by change 969974 is addressed. Specifically, file transfer time was degraded under conditions of high latency when submitting or promoting changes with many files. This problem that was introduced in the initial 2015.1 release has been fixed. #1027765 (Job #77595) ** 'p4 export -f' now formats the domain type column correctly for unloaded clients, unloaded labels, and unloaded task streams. #1026750 (Job #77504) ** * 'p4 -Zproxyload sync --parallel=...' now correctly updates the proxy's archive cache without sending files to the client. #1026544 (Job #77280) ** If a change submitted via an Edge Server was rejected by a change-submit or change-content trigger on the Commit Server, the change's files were modified to read-only mode on the client machine rather than being left in writable mode. #1026312 (Job #77435) ** A 'p4 integ' or 'p4 unshelve' command on an Edge Server which failed to open a +l file due to a client-side file transfer error would leave an orphaned lock record in db.excl. #1025869 (Job #77886) ** A parsing problem with the 'p4d -i' flag is resolved. #1025589 (Job #75647) ** 'p4 unload -c' from an edge server now allows unloading of clients with promoted shelves. #1025619 (Job #77726) ** 'p4 unsubmit' commands which have multiple arguments, and which terminate due to an error while processing an argument other than the first, now correctly sync the workspace with all the work that was successfully unsubmitted prior to that error. #1025545 (Job #77656, #77672) ** Audit log records for the push, fetch, zip, and unzip commands, in both the structured audit log and the P4AUDIT log, now have improved precision and additional detail. #1025484 (Job #77626) ** The 'p4 unsubmit' and 'p4 resubmit' commands are not available on an Edge Server, and issuing them against an Edge Server now gives an error message. #1025380 (Job #77326) ** 'p4 zip' no longer creates an empty zip file if the specified fileset is empty. #1024502 (Job #77719) * The 'p4 init' or 'p4 clone' commands, when they connect to a shared server, would cause log records to be written as an "unknown" client program and "unknown" program version. #1024419 (Job #77730) ** The 'p4 ldapsync' could run on replicas, potentially changing the contents of the replica's db.group table. This change restricts 'p4 ldapsync' so that it may only run on the master; replicas may forward the command, if forwarding is enabled. If configured to run in the background on a replica, 'p4 ldapsync' will immediately stop. Bugs fixed in 2015.1 #1017756 (Job #75344, #77391, #77392, #77395, #77421, #77577, #77578) ** In a distributed installation, fix records for jobs would not be global until submit. This could lead to inconsistent information depending on which edge server you were connected to. With this change, all fix record modifications made through 'p4 change' or 'p4 fix' are distributed to all participating servers. #1012267 (Job #77505) ** 'p4 sync --parallel' could issue malloc errors when a user enters a value for threads that overflows an integer. This has been fixed. #1010386 (Job #77471) ** The 'reload -p' command, used to migrate a workspace from one Edge Server to another, or between an Edge Server and the Commit Server, failed in certain specialized licensing scenarios. #1008489 (Job #77390) ** In a distributed installation, a pending change can be viewed on a server other than the server where the change was created. In such a situation, the pending change will not display a list of open files (the open files are shown only on the owning server). The 'change -d' command would incorrectly allow the pending change to be deleted if the command was issued on a server other than the owning server; this behavior is fixed and the command is now rejected with an appropriate error message. #1004762 (Job #77358) ** Fixed a crash that could occur when unshelving moved files to a different branch. #1003603 (Job #77229) ** The istat command run against a task stream target was not detecting delete actions in the parent stream, while the revisions in the task stream had not been promoted. Fixed. #1003287 (Job #77269) ** On a forwarding replica with server.depot.root set, a submit which added new files to a depot with a relative mapping would cache copies of those files in the default location under P4ROOT, instead of in the directory named by server.depot.root #1002985 (Job #76685) ** Stream 'import+' paths defined in streams whose parent type is virtual were not checking for the base (submittable) path of the target stream, causing a warning on 'p4 edit' and failure on 'p4 submit'. Fixed. #1001669 (Job #77231) * P4CLIENTPATH checking would not allow filenames with '..' as part of a path component. Fixed. #999127 (Job #77223) ** Replication threads (pull or journalcopy) using "long poll" (-i 0) could sometimes report a failure to open the wrong journal file. Fixed. #998869 (Job #73278) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly report that a changelist checksum differed if the changelist was submitted by a workspace with SubmitOptions = revertunchanged and at least one unchanged file was reverted during the submission of that changelist. #992976 (Job #77084) ** 'p4 -Ztag resolve -ot' now correctly displays the base for forced text merges of binary files. #992705 (Job #77031) * Client progress indicators now work for values of 1 million and higher. #984381 (Job #76808) ** The Perforce Windows Service shutdown time has been been shortened from a maximum of 120 seconds to a maximum of 15 seconds. This is bit more friendly to "net stop". #980686 (Job #76686) ** Parallel sync could under some high concurrency scenarios scan too many rows from db.sendq. This has been fixed. #979648 (Job #76627) ** Authentication failure occurs attempting to use P4V or P4VS clients -> swarm integration in a DCS configuration. #978994 (Job #76443) ** 'p4 status' could produce corrupted filenames in its output on windows platforms when the command is called with '/' as part of the file argument. This has been fixed. #978936 (Job #76625) * Commands that do checksum verification of client files were always reporting symlink files on Windows clients as changed. Fixed. #976632 (Job #76190) * If a password was set via P4PASSWD or the -P option, ticket lookups would fail. These ticket lookups are needed to check for valid logins on remote servers while the local server is logged in via password. Fixed. #976629 (Job #54717) ** If there was an invalid ticket in the ticket file and a valid logged in ticket in P4PASSWD that valid ticket was not honored. Fixed. #976189 (Job #76546) ** Parallel sync's per-thread batch count could under some circumstances exceed what was specified in the 'batch' argument. This has been fixed. #975020 (Job #76277) * In some cases p4 set -S Perforce may not display the setting for P4PORT. This has been corrected. #972184 (Job #37989) ** 'p4 submit' now checks that if a text file would add new revisions to an existing RCS archive file, that that file exists. This check can be disabled by setting the new configurable 'lbr.rcs.existcheck' to 0. #971892 (Job #76371) ** 'p4 integrate' no longer exempts files from searches for renames based on the presence of direct credit in the reverse direction. #969974 (Job #76351) ** 'p4 submit' from an edge server could succeed even when files of type 'ctext' failed to transfer to the commit server. This has been fixed. #968589 (Job #67075) ** 'p4d -jr -f -s' was not rejournaling delete records when the record was not actually deleted. This causes problems when you want to align replicas with a master. Fixed. #966093 (Job #5617) * Form files with specifications edited are no longer removed in case of several errors. A new error reporting that the file was kept is reported. Related, the temporary files created for spec edits are now created with owner only permissions. #965293 (Job #61632) ** The pull and pull -u threads of replica servers no longer retain an open file handle to the journal file on the master server when they are otherwise idle. #963201 (Job #44559) ** Replica servers will now detect an accidental invocation of 'p4d -jc' or 'p4d -jj' issued directly to the replica, and will refuse that command. The correct way to checkpoint a replica is to run 'p4 admin checkpoint' on the replica, then rotate the journals on the master server. #962556 (Job #75947) ** Cluster members don't see failover if they are down at the time. Added a P4TARGET verification phase during server startup to assure that servers are updated with the latest failover changes if they occured when the server was down. #961024 (Job #76044) ** 'p4 submit' will no longer permit an 'edit' to be submitted to a file that is deleted at the head revision. #960002 (Job #73909) ** When a workspace on an Edge Server was used to merge new files into a task stream, the workspace's have records were not properly updated at the completion of the submit. #958549 (Job #75724) ** Erronious dbopen::get status 1 errors when file altered during submit errors are reported. Fixed. #952713 (Job #75810) ** 'p4d -jd' would issue an error message if db.ckphist was read-only. #949563 (Job #75718) ** On an Edge Server, 'p4 print -o' of a remote shelf mishandles the name of the output file. #940873 ** A server started with 'p4d -i' no longer writes journal note 7 to its journal when it starts. #937039 (Job #75196) ** The post-user-info command trigger is now available for use. #936970 (Job #74245) ** 'p4 stream -d name' should not complete when there are clients of the stream. This protection was failing when only versioned clients (containing both Stream and StreamAtChange fields) of the stream existed. This has been fixed. #936970 (Job #73130) ** Deleting a stream-client fails when the underlying stream has been deleted and no-longer exists. To delete this client, first unload the client using 'p4 unload -c ' followed by delete using 'p4 client -d '. #933680 * 'p4 reconcile -m' will now perform digest checks on files whose modtime is older (not just newer) than the modtime value stored on the server. #933045 (Job #73790) ** 'p4 revert -a' now will revert files opened for add that are missing from the workspace if they do not have pending integration records. #930749 (Job #41230) ** 'p4 duplicate' would sometimes fail reporting corruption of the db.integed table. Fixed. #929671 (Job #74935) ** 'p4 configure set' now obeys the filesys.P4ROOT.min and filesys.P4JOURNAL.min configurable values. #928004 (Job #74855) ** 'p4 interchanges' will now exclude changes that have been integrated individually between files that do not share a single common base. #927254 (Job #74842) ** 'p4 integrate' will no longer consider a file that has been re-branched over itself to contain new changes relative to its parent revision. #926748 (Job #74663) ** If 'p4 reload -c -p ' was used to migrate a workspace from the Commit Server to an Edge Server, the command would complete before all the database changes made to the Commit Server had been fully replicated to that Edge Server. #909170 (Job #74645) * ** Resolving a file and accepting 'theirs' with modtime enabled will now set the client file's timestamp to match the depot revision its contents were copied from. Previously the server-side timestamp was copied, but the client file would not be updated until the next sync. #908151 (Job #72457) ** Running out of space in the shared memory db.monitor table could cause server crashs. Fixed. #905967 (Job #74263,#74425) ** Stream clients of task streams can no longer be modified to point to different streams while there are opened files in the client. For non-task stream clients, a warning is given when there are opened files - which the '-f' (force) flag can override. Those files opened will remain unsubmittable until the stream field is returned to the originating stream. #904476 (Job #73913) ** 'p4 reconcile' elapsed time performance has been improved when detecting non-textual files to open for edit. #901775 (Job #74331) ** A case involving integrating a delete between two renamed files has been improved to no longer provoke a conflict. #900691 (Job #73887) ** The 'p4 renameuser' command can now be used successfully in a P4AUTH configuration. In such a case, you'll need to rename the user in both servers, by issuing a separate 'p4 renameuser' command to each server, in either order. #899057 (Job #71623) ** 'p4 populate', when run with fromFile and toFile was not checking if the target (toFile) was within a stream and therefore not able to update the change field of that stream. #899077 (Job #74233,#74234) ** Certain file transfer errors were not reliably detected by 'p4 shelve -p'. #897653 (Job #68823) ** 'p4 reconcile', when run through a client of a virtual stream was not checking for the base (submittable) path of the target stream, causing an unnecessary warning. This has been fixed. #892210 ** 'p4 submit' will no longer submit files open for 'add' against a head revision of 'edit'. (See change #19923, which fixed this for the case where the head revision was an 'add'.) #887499 ** 'p4 add' will no longer open files with 'add from' credit (see change #252485) when the head revision is a move/delete, since this creates a confusing state where one file has two active names. Move operations should be undone by using 'p4 move' to move the file back into place. #871535 (Job #72841) ** 'p4 passwd -O' now requires that -P also be specified. #862767 (Job #67527) ** The following commands no longer take the server.locks/meta/db lock: obliterate (without -y), archive -n, and restore -n. #861031 (Job #72996) ** The metadata pull thread in a replica server with db.peeking set to 2 or higher might hold clientEntity locks longer than necessary, reducing concurrency on the replica. #860864 (Job #72994) ** Certain 'p4 opened' commands could potentially return incorrect results on a server with db.peeking set to 2 or higher. #860522 (Job #73023) ** When a background pull thread in a replica receives an error message (e.g., an authentication failure) from the master server, the background pull thread will now use the -b backoff timer, rather than the -i interval timer, to schedule the retry. -------------------------------------------------------------------------- Major new functionality in 2014.2 #854976 ** Introduced in 2013.3, improved concurrency through lockless reads is now the default. The default (db.peeking) value is 2. Lockless reads requires that server locks are enabled, since this can cause issues for long duration syncs, the default value for controlling the 'sync' server lock (server.locks.sync) has been changed to 0 (disabled). NOTE: maxlocktime has been changed when peeking is enabled (see change 887850). To revert to the old behavior set the 'db.peeking.usemaxlock' configurable to 1. #839759 (Job #3872) ** Given a data center containing multiple roughly identical Linux machines connected by an enterprise-grade LAN and sharing equal access to the same enterprise-grade storage server, Perforce can be deployed to those machines such that: - The overall Perforce installation appears to end-users and their applications as a single Perforce server. - As servers are added to the installation, it can horizontally scale as the number of Perforce users increases. - The installation can withstand the loss of the master server without the need for immediate manual intervention, and without causing extended downtime; the installation will automatically fail over to a standby server and continue service. To deploy automatic failover support in your Perforce installation, you will need to include several new components in addition to the p4d and p4broker components: - The p4zk process provides cluster coordination services. - The p4cmgr toolset provides DevOps support for installation, deployment, configuration, monitoring, and administration. The p4cmgr toolset will be available in November. NOTE: This is an early release of clustering, and requires Perforce consulting engagement for deployment. #906143 (Job #74413) ** When p4cmgr creates a standby node it initially runs some configuration commands; these commands produce a journal. This setup journal is independent of the cluster-wide journal and it is never replicated. After setup we rename this journal to a name like "journal.2014-10-28T12:47:41.0.bak"; it uses an ISO 8601 timestamp to provide a unique name and appends ".bak" to indicate that these journal records are of purely historical interest. You may examine this journal file if you wish or you may delete it; the cluster software never uses it. #820746 (Job #23901,#39524,#50751,#53891,#65998,#70255,#70256) ** Users can now be authenticated against LDAP servers like OpenLDAP or Active Directory without the need for an external authentication trigger. This feature supports identifying users in the directory by direct mapping, performing searches or using SASL depending on the LDAP server's support. The Perforce Server must be configured to use LDAP/AD authentication by creating an LDAP configuration with the new command 'p4 ldap' and assigning that configuration a priority order by setting the new configurable 'auth.ldap.order.N' with the configuration's name. All auth triggers will be disabled when LDAP auth is enabled. The new AuthMethod field in the user spec is used to decide whether the user authenticates against an LDAP server or the Perforce database. This feature is only available on Linux and Darwin for Intel(x86, x86_64) and Windows platforms. #820182 (Job #41143) * P4CHARSET no longer needs to be set for a client to connect to a Unicode mode Perforce Server. Clients will now detect the mode of a Perforce Server and remember it in the environment by setting a variable name with a format of 'P4__CHARSET' to either 'none' or 'auto'. The value of 'none' means the server at the given port is not a Unicode server, while 'auto' means it is a Unicode server. The 'auto' charset value is also new and it means that the client should be examined and a charset value selected based on OS specific properties such as a LANG environment variable. Windows and MacOS X clients can store this new information in system provided utilities. Other platforms, such as Linux, will now set an environment file. The environment file is available on all platforms if a P4ENVIRO environment variable is set to a file path. P4ENVIRO will default to a file '.p4enviro' in the user's home directory for systems which do not have system provided facilities. The p4 enviro file can be shared across platforms. The 'p4 set' command can be used to manipulate or inspect this new environment facility. Note that these special 'P4__CHARSET' values will only appear in 'p4 set' output for the specified or current P4PORT value. For instance 'p4 -p perforce:4666 set' will report on 'P4_perforce:4666_CHARSET' if it is set. #816591 (Job #51209) ** A new streams pathType 'import+' allows for the path to be updated. Performs in the same way as 'import' except that no warning messages are provided on 'add/edit/delete' and the user is able to submit to the import path. #770674 (Job #1648) ** Client specs now support an optional 'ChangeView' field that locks certain depot paths to a particular changelist level: ChangeView: //depot/path/...@1000 Revisions belonging to files under those paths will not be visible if they were submitted after the given changelist. Files mapped in the ChangeView may not be submitted. Minor new functionality in 2014.2 #907715 * ** The default value for 'net.tcpsize' has been raised from 64K to 512K. This tunable increases the network buffer size, which will provide better performance over high latency network connections. #898025 (Job #60850) ** 'p4 unshelve -S' now accepts a '-P' option to specify an arbitrary effective parent stream. #897437 (Job #73443) ** 'p4 shelve -d -f' will now delete shelved files that are the source of pending resolves. If this happens, the resolving user will not be able to merge content from the shelf; they must either 'ignore' the missing shelf or revert. #895042 (Job #73409) ** An operator user is now allowed to run 'p4 depots'. #891931 (Job #70751,#73910) ** The new configurable 'dm.shelve.promote' (default 0) can be enabled to make edge servers always promote shelved files to the commit server (rather than use the -p flag). Generally enabling this configurable is a really bad idea, it will cause a lot of unnecessary file transfers for shelve commands that are not intended for sharing. #891014 (Job #73744) ** The new configurable 'lbr.autocompress' (default 0) changes the default storage method to compressed text (ctext) rather than rcs format (text). To the user the filetype will still show type 'text'. Its a good idea to set this variable when using the commit/edge configurations or sharing archive files between servers. #884941 (Job #73346) ** A new trigger variable "argsQuoted" is available that contains the command arguments as a percent-encoded comma-separated list. #872401 (Job #73246) ** 'p4 obliterate' when used with peeking enabled will now be more concurrent with other commands such as 'submit'. #848368 (Job #64910, #72509, #25260 ) ** The new configurable 'submit.noretransfer' tells submit to avoid re-transferring files when retrying a failed submit. 'p4 submit -c --noretransfer <1|0> allows a user to override the configured behavior. #842946 (Job #72103) ** The new 'p4 prune' command allows the owner of a stream to remove unmodified files from it, as if with 'obliterate -b'. #846127 (Job #28808,#42312,#62352,#72096) ** * The submit and shelve commands, if run from an updated client, now perform additional checks to avoid running the server out of disk space midway through the file transfer phase. #841159 ** 'p4 reconcile' will now detect files that are open for edit but missing from the client, and reopen them for delete. #839758 (Job #70330,#69700) ** The new command 'p4d [-z] -jv ' can be used to verify the basic structural integrity of the checkpoint or journal file, including its MD5 digest. #832025 (Job #58201,#65733) ** The new configurable 'rpl.forward.login' may be useful in certain replica configurations, particularly those in which multiple replicas are deployed in the same data center as the master. #835174 ** 'p4 reconcile' will now process multiple file arguments as a single batch so that renamed files can be detected when they're split across different arguments. #832294 ** An optimization to the client/server protocol for the 'p4 sync' command should result in better throughput when syncing many small files over a high latency network. #827569 ** 'p4 verify' has been added to the list of files that can run in lockless mode. #827124 ** 'p4 describe' has been added to the list of files that can run in lockless mode. #803860 ** The 'p4 pull' command now accepts the -L flag. It is designed for use with standby replica servers. #801569 (Job #71136) ** A replica with rpl.pull.position specified will now include notes of type 23 in the replica journal with information about replica statefile and timestamp processing. This is useful for monitoring replication lag. #801171 ** The new command 'p4 journalcopy' is available. It is designed for use with standby replica servers. #893342 ** (Job #52885) By default when the journal is rotated any structured logs are also rotated. When the new dm.rotatelogwithjnl configurable is set to zero, log rotation is not performed at journal rotation. #796127 ** (Job #52885) By default logs are rotated at the same time journals are. The new dm.rotatelogwithjnl configurable can be set to zero to disable that. #795814 ** (Job #21830) The server daemon will write its PID to a file when supplied the --pid-file option. #794236 ** (Job #71514) 'p4 interchanges' now has a '-u' flag that filters results to a particular user. #793292 ** The 'p4 server' spec now includes a User: field, which can be used to specify the service user that is expected to be used by that server. Also, when the value of the security configurable is 4 or higher, the server now applies several additional checks when accepting replication requests from a remote server. These checks validate the serverid and service user being used by the remote replica server. #790595 (Job #53510, #68485) ** A structured server log may now be associated with a rotation counter by defining the serverlog.counter.N configurable, in which case the counter will be used to generate the file name for the rotated server log. The current value of the counter is also returned in the output of 'p4 logtail -l '. #786582 ** 'p4 pull -l -s' now includes an additional line of output, identifying the oldest changelist number which has at least one pending transfer. #785614 (Job #47379) ** The configurable 'lbr.verify.script.out' can be set to 0 to indicate that files with the +X filetype should not have their digest checked when transmitted from the server to the client. #780804 ** The 'p4 reload -p' argument can now be specified either as the P4PORT of the remote server, or the serverid of the remote server. If a serverid is specified, the server spec for that server must contain the correct P4PORT value in its Address: field. #777628 ** When using 'p4 reload -c -p ' to migrate your unlocked workspace from one Edge Server to another, it is no longer necessary to first issue the 'p4 unload -c ' command to the remote Edge Server. The reload command will automatically issue the 'p4 unload' command for you, and will wait for it to complete, prior to reloading your workspace into the new Edge Server. #775711 ** If the 'monitor' configurable is set to a value of 5 or higher, the server will track certain information about database table locks in the db.monitor table, and will make it available via the new '-L' flag to 'p4 monitor show'. This feature has a non-trivial performance impact, so (on platforms where it is available), the 'monitor.lsof' feature of change 771259 is preferable. #771259 (Job #71647) ** On a Linux server, the new configurable 'monitor.lsof' may be set as follows: 'monitor.lsof=/usr/bin/lsof -F pln', varying the executable path as necessary for your system. Once set, this configurable enables the new '-L' flag to 'p4 monitor show', which will include information about locked files as part of the monitoring output. Bugs fixed in 2014.2 #1455848 (Job #88980) ** In replica chaining configurations, replicas which were not directly connected to the master server were not processing archive deletion operations arising from operations such as submission of a binary+S file, deletion of a shelf, obliteration, archive depot operations or retype +l commands. #1410626 (Job #87181) ** Correct the digest used to ensure that content is transferred correctly to commands within triggers (such as a 'change-content' trigger) when submitting a shelf. A shelf is implicitly submitted to the commit server when a submit is run on an edge server. #1376860 (Job #71853, #75135, #75136) ** Parallel sync commands will not fail when net.parallel.max is unset or the requested number of parallel threads exceeds net.parallel.max. Instead the command will proceed without using parallel threads, or will use the max number of allowed threads. In these cases an informational message will also be written to the log. #1373097 (Job #85991) ** Report to stderr (except on Windows), and syslog or the event log (as supported by the platform), any errors encountered when writing to the server log or a structured log. #1362027 (Job #85371) ** 'p4 sync --parallel=..' using multiple file arguments could fail to transfer some files if any of the file paths did not contain enough data to use parallel threads. This has been fixed. #1361919 (Job #85376) ** Fix for false database corruption error when long descriptions are updated concurrent to readers reading the same description. #1357677 (Job #85346) ** Fixed a memory leak in 'p4 verify'. #1352542 (Job #85157) * The MacOSX command line client could fail to complete a parallel sync if two or more parallel transfers attempted to create the same directory in the filesystem at the same time; the failing file transfer would print: "mkdir: /path/to/dir: File exists". #1341013 (Job #84992) ** If an archive file for a local shelf on an Edge Server should become damaged or missing, deleting the shelf, or deleting or replacing that file in the shelf, will now cancel any pending file transfer for that file which was listed in 'pull -l'. #1337988 (Job #84848) ** * 'p4 -Zproxyverbose sync --parallel=...' now correctly displays the diagnostic information about which files were delivered from the proxy's cache. #1312519 (Job #76913) ** 'p4 files ' when using a revision specifier other than #head (e.g. @label), or a revision range ending with a revision specifier other than #head, will now access the rev table in lockless mode. 'p4 files @label' will now also access the label table in lockless mode. 'p4 files @change,@change' will now also access the revcx table in lockless mode. And at 'db.peeking=3', 'p4 files ' will now access the rev table in lockless mode, even if not using a revision specifier or a revision range. #1242773 (Job #81040) ** The server.locks.archive configurable introduced by #898102 now also applies to the 'p4 restore' command. #1239015 (Job #80722) ** A file which was integrated from a streams depot to a local depot, or vice versa, would be placed into the wrong location in the proxy cache if it was accessed via the proxy by a command such as 'p4 sync' or 'p4 print'. Note that the symptom of this bug is in the proxy cache, but the fix is in the server. #1225187 (Job #74936) ** A 'sync --parallel' command issued via a forwarding replica would complete immediately, but would sync no files. #1213529 (Job #79647) ** p4d -jr would mis-handle the revStatus field if replaying db.rev journal records written by a 2005.2 or older server. #1028814,#1204292 (Job #56707) ** The presence of a client spec with the same name as the TCP/IP address of a replica machine no longer causes that replica to issue the error: "Don't know how to translate paths for OS ''". #1172454 (Job #79504) ** A submit initiated on an Edge Server which failed due to a problem detected after the edge-content trigger had been checked could leave the changelist incorrectly marked as "shelved", and possibly also as "promoted", on the Commit Server, although the changelist was correctly recorded on the Edge Server itself. #1127279 (Job #79353) ** A 'sync --parallel' command which sync'd any files of type 'binary' would write an incorrect value for the 'type' field of the db.have record for the binary file(s). This could cause problems later when integrating changes into these files from other branches. Any workspaces potentially affected by this bug should be sync'd to revision #0 and then re-sync'd for all files of type binary at their convenience in order to rewrite the db.have records. #1070355 (Job #77551) ** 'p4d -i' when run under inetd on unix no longer shows 'unknown' for all addresses. #1065376 (Job #77360) ** In a distributed configuration, the 'edit -n' and 'delete -n' commands for a file of type +l might incorrectly report that the file was opened by another user, though it was not. #770787 (Job #76809) ** 'p4 describe' could print an internal error message if describing a change on a stream with an import statement using a changelist specifier. #1061247 (Job #78830,#78915) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly write its own journal file under conditions of high concurrency on the master, resulting in incorrect behavior and problems with replicas of this replica. #1059769 (Job #78855) * ** 'p4 sync --parallel' now works with certain custom licenses. #1058411 (Job #78785) ** If a replica with rpl.checksum.change set to 2 or higher encountered an internal error processing a changelist checksum note, it would halt replication. Now, it logs the error but resumes replication. #1050954 (Job #78647) ** On an Edge Server with submit.unlocklocked=1, a submit which fails with "Out of date files must be resolved or reverted" could incorrectly alter the resolve state of the open files if the conflicting change was submitted simultaneously. #1047418 (Job #78444) ** The replica-specific table db.user.rp is now journaled. This means that the table data will appear in checkpoints, journals and dumps. The replica pull thread automatically filters out all db.user.rp records from its P4TARGET server, which is normally the desired behavior, since records in this table are unique to each replica's activity. However, for maintaining warm standby replicas of other replicas, you can set rpl.replay.userrp=1 for the standby replica to disable the filtering and replicate db.user.rp data. #1046060 (Job #73967) ** 'p4 -ztag servers' could report incorrect values for the 'User' field for server specs upgraded from an older release. #1045565 (Job #78497) ** Promoting a shelf, then subsequently deleting it, using the same network connection to the Edge Server could fail to properly delete the shelf. #1042783 (Job #78427) * 'p4 -P sync --parallel' will no longer give authentication errors for the file transfer sub-processes. #1039831 (Job #73075, #74961) ** The revision specifier @client was not working properly for clients bound to a build-server. #1039277 (Job #78383) ** A 'p4 describe' command which accesses a remote promoted shelf now properly reports any communications-related error conditions which occur when retrieving the remote shelf. #1038934 (Job #78164) ** In a distributed environment, the change-failed trigger now runs on the commit server rather than on the edge server. #1037755 (Job #76982) * If a 'p4 sync --parallel' child process encounters an error writing files to the local machine, the parent 'p4 sync' command now returns a non-zero exit status to the operating system. #1036596 (Job #77433) ** In a distributed configuration, 'p4 unshelve' no longer takes the global exclusive file lock for a file of type +l which is unshelved for add. #1036485 (Job #77069) ** A 'p4 describe -S' command on an Edge Server which specified more than 1 promoted shelf which was created on a different Edge Server would fail with an 'Unknown changelist' message. Bugs fixed in 2014.2 PATCH6 #1032010 (Job #74056) ** 'p4 sync --parallel' would fail to expand RCS keywords properly. #1031176 (Job #76013) ** 'p4d -xx db.working db.have' could create spurious delete records for db.working if a file opened for move or delete is subsequently moved and submitted by another client and the opened file is then synced to the head revision. #1030313 (Job #77559) ** A build-server replica would incorrectly process the View: field for labels, causing the wrong set of revisions to be specified by the label. #1029766 (Job #76626) ** Promoting a shelf could fail erroneously with a message: "Files newly opened or reverted during submission." #1028372,#1028461 (Job #77558) ** A replica with lbr.replication=cache was not able to access labels using the autoreload option. #1027668 (Job #77595) ** 'p4 export -f' now formats the domain type column correctly for unloaded clients, unloaded labels, and unloaded task streams. #1026707 (Job #77504) ** * 'p4 -Zproxyload sync --parallel=...' now correctly updates the proxy's archive cache without sending files to the client. #1026534 (Job #77280) ** If a change submitted via an Edge Server was rejected by a change-submit or change-content trigger on the Commit Server, the change's files were modified to read-only mode on the client machine rather than being left in writable mode. #1026233 (Job #77435) ** A 'p4 integ' or 'p4 unshelve' command on an Edge Server which failed to open a +l file due to a client-side file transfer error would leave an orphaned lock record in db.excl. #1013324 (Job #77580) ** When the configurable 'auth.default.method' is set to 'ldap', new users may only be created by super users or by automatic user creation following a successful authentication against an LDAP server via 'p4 login'. #1010386 (Job #77471) ** The 'reload -p' command, used to migrate a workspace from one Edge Server to another, or between an Edge Server and the Commit Server, failed in certain specialized licensing scenarios. #1008489 (Job #77390) ** In a distributed installation, a pending change can be viewed on a server other than the server where the change was created. In such a situation, the pending change will not display a list of open files (the open files are shown only on the owning server). The 'change -d' command would incorrectly allow the pending change to be deleted if the command was issued on a server other than the owning server; this behavior is fixed and the command is now rejected with an appropriate error message. #1007724 (Job #76835) ** Promoting a shelf that has a job attached and then subsequently removing the job from the change could result in an orphaned fix record if the change is later renumbered during a submit. Bugs fixed in 2014.2 PATCH5 #1004762 (Job #77358) ** Fixed a crash that could occur when unshelving moved files to a different branch. #1003295 (Job #77269) ** On a forwarding replica with server.depot.root set, a submit which added new files to a depot with a relative mapping would cache copies of those files in the default location under P4ROOT, instead of in the directory named by server.depot.root #999906 (Job #76686) ** Parallel sync could under some high concurrency scenarios scan too many rows from db.sendq. This has been fixed. #999214 (Job #77223) ** Replication threads (pull or journalcopy) using "long poll" (-i 0) could sometimes report a failure to open the wrong journal file. Fixed. #998938 (Job #73278) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly report that a changelist checksum differed if the changelist was submitted by a workspace with SubmitOptions = revertunchanged and at least one unchanged file was reverted during the submission of that changelist. #979987 (Job #76552) ** Standby or edge-servers targeting a standby server did not replicate correctly. Fixed. #979987 (Job #76553) ** 'p4 servers -J' against a non-depot standby server reported 0 for the current journal offset rather than the current journal size. Fixed. Bugs fixed in 2014.2 PATCH4 #975016 (Job #76277) * In some cases p4 set -S Perforce may not display the setting for P4PORT. This has been corrected. #974381 (Job #72457) ** Running out of space in the shared memory db.monitor table could cause server crashs. Fixed. #973892 (Job #76360) ** 'p4 integ -Rdb -Or' through an edge server could leave a db.excl (+l) orphaned lock if the resolved action is to branch. #972359 (Job #76323) ** 'p4 delete' through an edge server could leave a db.excl (+l) orphaned lock if the delete failed due to a 'clobber' failure. #970590 (Job #76365) ** A replica running on a case insensitive filesystem could hang during journal recovery in the rare event that a client name was changed (by case only). #967709 (Job #72432) ** False database errors on db.resolve should no longer occur. #967708 (Job #75382) ** The maximum size of shared memory for monitor table use was too small (4096 8K pages). Now it's 32768 pages for all platforms except Windows 32bit where memory address space is severely limited. #965284 (Job #61632) ** The pull and pull -u threads of replica servers no longer retain an open file handle to the journal file on the master server when they are otherwise idle. Bugs fixed in 2014.2 PATCH3 #960002 (Job #73909) ** When a workspace on an Edge Server was used to merge new files into a task stream, the workspace's have records were not properly updated at the completion of the submit. #954124 (Job #75844) ** In certain chained replica configurations, updates to 'p4 server' specs on the master server were not propagated beyond the first replica on the chain. #954068 (Job #75800) ** 'p4 filelog file[revRange]' where the revRange is really high compared to following revisions can excessively scan. #951087 (Job #75772) ** The default value for the 'net.tcpsize' configurable was documented incorrectly as 256K (instead of 512K) in 'p4 help configurables'. #950290 (Job #75738) ** P4IGNORE is no longer applied to files being opened for add from an existing depot revision. #949570 (Job #75718) ** On an Edge Server, 'p4 print -o' of a remote shelf mishandles the name of the output file. #949003 (Job #75687) ** Labels, clients, or branches with very large descriptions could cause internal errors when peeking. Fixed. #944004 (Job #74754) ** Now we allow the Zookeeper servers to lag behind the boot of the rest of the cluster servers. Default timeout is 5 minutes but it can be changed via the configurable zk.connect.timeout. We do not let this value be <= 0 if so, then the configurable will be changed to its default value of 300 seconds. #943720 (Job #60630) ** 'p4 client -S stream@change name' might use the wrong stream parent had the stream been reparented after change. This has been fixed. #941953 (Job #75160) ** When running 'p4 change -f' from a task stream workspace for a non task stream changelist, a database lock error could be observed: 'dbscan db.revtx: no read lock'. #941449 (Job #75141) ** When migrating client workspaces from commit servers to edge servers, promoted shelves are no longer accessible on the edge server they are bound to. This change allows 'submit -e' to automatically pull metadata and content to the server with the correct ownership. #941282 (Job #75373) * Failed P4CHARSET detection would cause subsequent commands to return a failed error code even if they succeed. #940387 (Job #75336) ** The server spec form and 'p4 help server' both now describe the 'workspace-router' services type as well as grouping the service types according to which server type allows them. #938145 (Job #75235) ** 'p4 servers -J' for a standby server now reports the length of the current journal rather than that of the (length 0) live journal. #938004 (Job #74998) ** 'p4 reload -p -f' now works correctly even if the workspace isn't currently unloaded. #937672 (Job #74698) ** The replica will now drop and reconnect its TCP connection to the P4TARGET server when an error results in the replica's pull thread performing a "backoff" sleep. #937623 (Job #70919) ** The filesys.*.min configurables now default to 250MB. Change 846319 was incomplete. #937421 (Job #75144) ** 'p4 help configurables' was missing entries for 'rpl.journal.ack' and 'rpl.journal.ack.min'. #935793 (Job #74137) ** Added master generation number check so that an old master will not be able to join a cluster after it has failed over to a new master. This change requires that any existing users of 2014.2 prior to PATCH 2 of the Perforce cluster feature must remove their Zookeeper data cache on each server. * stop the cluster * stop zookeepers * remove the existing data caches (see zoo.cfg for location) * restart zookeepers * restart cluster #935654 (Job #41230) ** 'p4 duplicate' would sometimes fail reporting corruption of the db.integed table. Fixed. Bugs fixed in 2014.2 PATCH2 #958074 (Job #75933) ** LDAP-based authentication against some Active Directory servers would incorrectly authenticate successfully when an empty password was provided (non-empty passwords would validate only if they were correct). Authentication attempts against an LDAP server now fail if the password is empty. This means that you can't use the ldap AuthMethod if you don't set passwords for your users. If you want to use LDAP authentication for users without passwords then you should use an external authentication trigger. Note that this is an insecure configuration. Bugs fixed in 2014.2 PATCH1 #941282 (Job #75373) * Failed P4CHARSET detection would cause subsequent commands to return a failed error code even if they succeed. Bugs fixed in 2014.2 #931334 (Job #74855) ** 'p4 interchanges' will now exclude changes that have been integrated individually between files that do not share a single common base. #926940 (Job #74435) ** Operations transferring many files via a proxy with most transfers not cached by the proxy could hang. Most likely to happen with a broker between the proxy and a server. Fixed. #926889 (Job #74020) ** When migrating client workspaces from commit servers to edge servers, promoted shelves are no longer accessible on the edge server they are bound to. This change allows 'describe -S' to automatically pull metadata and content to the server with the correct ownership. #907803 (Job #74832) ** Under high concurrency, BTree is corrupt errors might appear along with BTCursor::find status 0 messages but the table is not actually corrupt. Fixed. #895719 (Job #71795) ** A better error message is issued when accidentally attempting to use a Commit Server-bound workspace on an Edge Server. Also, the 'p4 clients -s NNN' and 'p4 labels -s NNN' commands now print the complete list of clients/labels when NNN is the Commit Server's serverid. #895107 (Job #73953) ** If a replica fails to take a checkpoint, an error message about the failure is now written to the replica's log file. #893234 (Job #73768) ** 'p4 clean' will no longer attempt to take exclusive depot file locks in a distributed environment. #892218 (Job #72136) ** Unloading many clients could cause large db.have tables ( > 100MB ) to loop allocating pages. #887850 (Job #71527) ** Perforce servers with 'peeking' enabled would still have processes killed by MaxLockTime when not holding blocking locks. #886584 (Job #73402) ** 'p4 renameuser' would fail to completely rename the user. #886135 (Job #34561,#73503) ** 'p4 resolve' using options to ignore whitespace or line endings (ie -dw, -db, -dl) could cause the target of the integration to be erroneously recorded as a 'copy' when whitespace differences exist and are not copied to the target. This has been fixed by recording this condition correctly as a 'merge'. Before this was fixed, files that had been shelved in this situation could not be unshelved easily. #883281 (Job #73071) ** 'p4 client [-o] -S name' without the -s "switch" now reports an error should the target 'name' client exist with either a different stream, or without a stream defined. Former behavior was to ignore the -S . #879410 (Job #73373) ** 'p4 reconcile' elapsed time performance has been significantly improved when detecting files to open for add. #877872 (Job #73313) ** An 'annotate', 'diff', 'diff2', 'describe', or 'resolve' command which used the '-db' or '-dw' flags could crash if one of the file revisions processed by the command was exactly 65,536 bytes in size. #877282 (Job #73316) ** Spec depot entries now generate corresponding server.locks files only if that spec depot entry is stored in RCS format. #876857 (Job #73314) * ** *** TCP keepalive variables can now be set on Windows with these restrictions, due to limitations in the Windows API: - net.keepalive.count can not be set. - both net.keepalive.idle and net.keepalive.interval must be set if either one is set; neither should be set to 0. #874560 (Job #71729) ** Unshelving +l files in a distributed environment could result in inconsistent error messages if the user had other files opened in his workspace. This has been fixed. #871169 (Job #72759) * Filetype detection with P4CHARSET=utf8 now detects non-UTF8 files as either text or binary in a manner more consistent with other charset settings. #850073 (Job #72842) ** 'p4 submit' will no longer record revisions with invalid archive paths after unshelving an integrated file through a branch view. #849717 (Job #42041) ** The Server will now report the correct Windows error when the posix library file descriptor table is depleted. #849566 (Job #72816) ** The Edge Server algorithm for handling the replication of a large 'p4 obliterate' command is now more efficient. #846643 (Job #72162) ** Commands which must find lazy copies, i.e. obliterate, retype, and fstat -Oz, could cause stack overflows when there are many branches against the same file. Fixed. #846319 (Job #70919) ** The filesys.*.min configurables now default to 250MB. #844511 (Job #71329) ** p4 -ztag changes on a Unicode server would report a partial unicode character if there were 31 characters and only the last one was a utf8 multibyte character. Fixed to truncate. #840450 (Job #72691) ** The "Connection from broken" error message is now correctly logged to the server's structured error log, if defined. #839295 (Job #72676) ** 'p4 submit -e' of a promoted shelved change from an edge server will not copy the files to the commit server since the change lives on the commit server and the files are already there. #836790 (Job #72535) ** A replica might fail to perform an on-demand file transfer from its master server for a revision with no stored file size or digest information. #835387 (Job #72437) ** Repeated updates to shelved files in a short period will no longer cause replica servers to stall waiting for the archive transfers of the shelved files to complete. #835083 (Job #72129 ) ** The combination of converting a task stream to a non-task stream while 'db.peeking' is set would fail due to lock-ordering. This has been fixed. #834034 (Job #71960,#72441) ** In general, you should never need to set the ServerID field in a 'p4 client' form, but if you do set the field, the server now validates it more carefully. #833834 (Job #72158) ** If external authentication is enabled, the 'p4 admin resetpassword' command is now refused with an error message. Please use the mechanisms of your external authentication system to enforce the password reset policy. #831471 (Job #72307) ** Case insensitive servers were matching client roots with client paths with a case sensitive match. Fixed. #821026 (Job #72180) ** Triggers now set %serverip% to IP address rather than to hostname. #819489 (Job #72151) ** 'p4 annotate -I' now works correctly with the '-dw' flag. #817214 (Job #72119) ** A readonly replica now allows the command 'p4 clean' to run. #814054 (Job #71394) ** Previously if 'p4 shelve -r' should have resulted in all files being removed from an existing shelved change, the command would report "No files to shelve" and do nothing. Now the command removes all shelved files and deletes the shelved change. #813973 (Job #71087) ** 'p4 fstat //...@=change' will no longer scan the db.revsx (spec depot) table, since spec depot files do not have changelists. #813774 (Job #68895) ** 'p4 diff -du' will now skip deleted files, similar to other 'p4 diff' options. #812768 (Job #71782) ** Multiple resolves performed sequentially could produce false "tampered" errors on submit. This has been fixed. #811430 (Job #71922) ** A Windows replica server would fail to transfer an unloaded client, label, or task stream created by 'unload -z'. #809156 (Job #68666) ** Replica servers now treat the '-n' form of the following commands as read-only: add, edit, open, delete, move, rename, unshelve, archive, and restore. #808573 (Job #71835) ** The Windows server using an SSL port can crash during 'p4 admin restart'. #808325 (Job #71961) ** 'p4 sync --parallel' would fail with the message "Can't clobber writable file" if the file was changed from filetype binary+w to filetype binary (or text+w to text) by the revision being sync'd. #806284 (Job #71893) ** A replica with lbr.replication=shared would incorrectly attempt to fetch a missing archive file from its master server. Also, it was incorrectly using the rpl.verify.cache setting if it was enabled; now a shared-archive replica does not validate its archives except when told to via 'p4 verify'. #804390,#834897 (Job #71847,#72545) ** 'p4 renameuser' was incorrectly processing group entries, protection table entries, and properties if there existed a group by the same name as the user being renamed. #802639 (Job #71592) ** In a distributed environment, force deleting an edge server client directly from a commit server could leave orphaned exclusive locks from that client that could not be deleted. #801991 (Job #71750) ** On Windows, a protects table entry that uses an IPv4 address with CIDR notation may not match the correct addresses if it has an octet that begins with a 0 digit and has a following octet whose value is greater than 7. #795201 (Job #68844) ** 'p4 help describe' regarding restricted changelists was confusing. This has been fixed. #794744 (Job #71525) ** The 'unload -a' command, in a distributed installation, now restricts its scope to clients and/or labels that are owned by the Edge Server where the command was run. #886610 (Job #63251) ** The forwarding replica and edge server configurations now accept the optional username argument on the 'p4 login' and 'p4 logout' commands. #780053 (Job #69512) ** 'p4 populate' no longer accepts multiple toFile arguments. #773380 (Job #70808) ** A multi-link chain of forwarding replicas could incorrectly re-process certain journal records during a journal rotation. #771609 (Job #21726) ** 'p4 filelog' and 'p4 integrated' now filter out integration records for which the user does not have 'list' access to both the source and target. -------------------------------------------------------------------------- Major new functionality in 2014.1 #767722 (Job #70103) ** Distributed commit/edge servers have been further optimized to work in a data center environment. Edge servers (first introduced in 2013.2) are a great way to offload work from the main server. The following three improvements make it easier to configure multiple edge servers that can be added to (scale out) as usage increases. Shared Archive - When the edge server and commit server have access to the same storage device for the file content (archive), setting lbr.replication=shared has been optimized to reduce network content transfer. Distributed Shelves - Shelving now functions between edge servers. In the shared archive configuration (as above) shelves are automatically promoted to the commit server and are available on any edge server. Edge servers not sharing the archive with the commit server need to 'promote' shelves using the new 'shelve -p' command. If this is the first time the server has been configured as a commit server, all existing shelves will be marked promoted. If this installation is already distributed, then you must run 'p4d -xf 71917' on the commit server to promote the shelves. Distributed Changes - New to this release, change descriptions and status is available to all edge servers participating in a distributed configuration. NOTE: A server configured as a 'commit' server cannot disable 'server.locks.dir' that is because these locks are required for shelve consistency. If you are a customer who has disabled this in the past due to problems with syncs, you can turn-off the longer duration lock by setting server.locks.sync=0. #693837 (Job #62657) ** Stream 'import' paths may now include a changelist specifier: import import/... //depot/import/...@1000 Clients of this stream will use this changelist to limit their view of those files, such that revisions from later changelists will be automatically hidden from most commands. The changelist limits that are in effect for a given client are displayed in a new read-only client spec field called 'ChangeView'. #650821 (Job #31840) ** The new 'p4 clean' command (equivalent to the new '-w' flag for 'p4 reconcile') can be used to restore workspace files to match the state of the corresponding depot files. Files that have been added to the workspace but not opened for add will be removed from the workspace, and files that have been modified or removed without being opened for edit or delete will be refreshed to match the version that was last synced. #708510 (Job #522, #2121, #2170, #18255, #21302, #24025, #25080, #25715, #32821, #55643, #60662, #65728) ** It is now possible to specify pre/post triggers on most commands. A new trigger type of 'command' exists that executes when a command matching the specified regular expression (regex) is run. E.g. banner command pre-user-login "figlet Hello, %user%" nooblt command pre-user-obliterate "fail command disallowed" ide_fn command post-user-(add|edit) "integration_with_ide.exe" #726410 (Job #18330) ** Triggers can now be run directly from the depot. Plain or stream depot files with an optional revision number can now be specified when placed within percent signs. E.g. %//depot/trigger.pl%. When a depot path variable is present in the trigger command, the contents of the variable are filled with the path to a temporary file with the contents of the depot file. E.g.: chk_path form-in client "perl %quote%%//admin/trigger.pl%%quote%" Becomes perl "/tmp dir/some_tmp_named_file" #711144 ** The monitor information, the table db.monitor, will now be maintained in shared memory by default. Enabling monitor information will require a server restart. The tunable db.monitor.shared can be set to 0 to disable shared memory or set to a number of pages of shared memory should the default (1Mbyte) be too small. All changes to this require a server restart. Minor new functionality in 2014.1 #893342 ** (Job #52885) By default when the journal is rotated any structured logs are also rotated. When the new dm.rotatelogwithjnl configurable is set to zero, log rotation is not performed at journal rotation. #793339 (Job #68848, #71375) ** The new trigger type 'change-failed' can be used to detect submit or populate failure as it only fires upon commit failure and returns the change number of the failed submit or populate. #790634 (Job #71355) ** Delete resolves are now ordered after other resolves. #784208 (Job #68928) ** p4d db file use changed which may improve operation on Windows platforms with some anti-virus scanners. #784278 (Job #64900) * ** 'p4 shelve -a leaveunchanged' shelves only changed files. #774149 (Job #70076) ** 'p4 copy' now supports a '-f' flag to force the creation of extra revisions for integration bookkeeping purposes. #770301 (Job #60662, #69042) ** The following new variables are available to triggers: argc - command argument count args - command argument string command - command name clientcwd - the client's current working directory groups - space-separated list of groups the user is in intermediateService - presence of a Broker/Proxy maxErrorSeverity - empty/error/warning maxErrorText - error number and text of error maxLockTime - user-specified value maxResults - user-specified value maxScanRows - user-specified value serverpid - the OS PID of the calling server process serverServices - 'Services:' field of 'p4 server -o'. serverVersion - version string for the server submitserverid - id of server where submit originated terminated - if the command exited early termType - reason for the early termination triggerMeta_action - command to execute by trigger triggerMeta_depotFile - third field in trigger definition triggerMeta_name - name from trigger definition triggerMeta_trigger - second field in trigger definition The %serverport% trigger variable now includes a transport prefix (eg, "ssl:", "tcp6:", or "ssl6:"). Thus "p4 -p %serverport%" can be used to connect to the server whether or not the server listens on IPv4 or IPv6, with or without SSL. See 'p4 help triggers' for all available variables. #766844 (Job #70121) ** The '-T' flag for 'p4 streams' now forces tagged output. #766646 (Job #70579) ** The 'files -A', 'print -A', and 'sizes -A' commands now process revision specifiers correctly when accessing the archive depot. #763331 (Job #70458) ** 'p4 describe' now diffs text+k files with the keywords collapsed so that the diff output is more consistent with 'p4 diff2'. #758482 (Job #65107) ** The metadata pull thread on a replica server may now choose to specify '-i 0'. This will reduce the replica lag on that replica at the cost of slightly higher resource usage on the master server. #752276 (Job #70027) ** 'p4 populate' now uses the command line arguments as the changelist description if no description is provided. #738116 (Job #39274) * ** 'p4 sync' now accepts the '--parallel' flag, to specify that multiple files should be transferred in parallel, using independent network connections from automatically-invoked child processes. In order to run a parallel sync, the configurable net.parallel.max must be set to a value greater than 1. #728727 (Job #68822, #59107) ** When a replica server replicates a large changelist containing new integration history, the table locking is optimized to lock revision data in the replica for a shorter period. #728562 (Job #67686) ** Multiple counters may be updated in a single command. Please see 'p4 help counter' for details. #724073 (Job #30052, #58946) ** Triggers typically get their parameters via command line variables like %formfile% or %client%. Now when the new triggers.io configurable is set to 1, triggers will receive a dictionary of key/value pairs sent to their STDIN and can send their dictionary response back to the server via STDOUT, similar to how the Broker does it. This new configurable defaults to a value of 0, which is 13.3 behavior. A future release will change the default to 1. #723545 (Job #69286, #69288) ** An update command submitted via a forwarding replica which is interrupted while it is waiting for replication processing to complete will no longer cause unnecessary system resource usage in the forwarding replica. New system configurables are available for fine-tuning these behaviors: see 'p4 help configurables'. #720626 ** 'p4 unload' now accepts the '-o outputFile' flag. 'p4 unload -o' writes the current state of the specified client, label, or task stream to the specified file on the client workstation, instead of unloading the object from the server to the unload depot. The client, label, or task stream remains fully loaded after the command is run. #719619 ** An administrator may use 'p4 print -U' to display the data from an unloaded client, label, or task stream. #717327 (Job #40148) ** 'p4 client -d -f -Fs' will delete a client even when it has changes with shelved files. In this case, the shelved changes are left intact. #711631 (Job #67673) * ** 'p4 reconcile -m' reduces costly digest computation on the client when detecting if files are changed outside of Perforce. This option can only be used if the files had been synced with the +m filetype, or using a client with "modtime" option set. #710472 (Job #66978) ** 'p4 fstat' now returns the 'isMapped' field for files that are open for add and mapped in the current client view. #710347 (Job #68682) ** Resolve records are now only considered to be 'pending integrations' for the purposes of 'revert -a' and 'revertunchanged' if they are of the type that will be written as permanent integration records on submit, i.e. originating from a different file from the target. #709340 (Job #65698) ** Super users can now run 'p4 logout -a USER' to invalidate another user's login ticket. #705255 (Job #36551) ** Server command options may now be specified using an alternative long-form syntax. For example, instead of p4 reopen -c 1602 -t text+F //depot/my/file you may now instead use p4 reopen --change 1602 --filetype text+F //depot/my/file To display the long-form options syntax for a particular command, use the '--explain' facility: p4 sync --explain Or to explain the syntax for just a single option of a command: p4 revert --explain -k In this release, nearly all options have both a short-form and a long-form syntax. The option behaves identically using either syntax. Some rarely used options have only a short-form syntax. #704128 (Job #65154) ** Expose the in-use %P4PORT% to SSO scripts so they can distinguish between the port used to talk to a broker/proxy and the real serverAddress. #703887 (Job #62279) ** Populate now fires change-submit triggers. As with change-content triggers, a temporary pending change record is created so that the description can be accessed, but be aware that populate does not have open files associated with it. #696966 (Job #57909) ** 'p4d -jd -z' now adds the '.gz' extension to the dump file if the filename doesn't already end with .gz. #693803 (Job #67684) ** 'p4 list' now takes the -d flag to delete a no-longer-needed temporary label. #685967 (Job #65732) ** The new 'p4 cachepurge' command can be used by an administrator to help manage replica servers which must be deployed on machines with limited disk space resources. #679524 (Job #26192,#52493) ** 'p4 sizes' now takes the -h flag to request the output be formatted in human-readable form. #676312 (Job #64123) ** In a distributed configuration, changes which are pending or shelved on an Edge Server are now visible in the 'p4 changes' command on other servers in the installation. #673961 (Job #67442) ** 'p4 copy' will now give warning messages when source files have been moved but the target is not correctly disposed to open them for move. In addition to a warning for each problematic file, there is a summary at the end suggesting a course of action to correct the problem (e.g. first copying from an earlier change that will provide a better basis for copying the move). #664438 ** 'p4 merge' will now output scheduled resolves by default. This was previously enabled by the '-Or' flag. #657309 (Job #3270) ** The new 'p4 renameuser' command renames an existing user to a new name, updating all the changes, specs, and other objects owned by that user. For more information, and some issues to consider prior to running the command, see 'p4 help renameuser'. #656580 (Job #65730) ** The configurables template.client and template.label can be set to provide a server-wide default client and/or label to be used as a template when the new client or label does not already exist and the -t argument is omitted from the 'p4 client' or 'p4 label' command. #656151 (Job #42211,#44034) ** The server.depot.root configurable can be set to modify the interpretation of a relative Map: field in all depot specs. Without the configurable set, relative maps are interpreted as relative to P4ROOT; with the configurable set, relative maps are interpreted as relative to the value of server.depot.root. #654585 (Job #19368,#51693,#56354,#68105,#70602) ** The server now records checkpoint/journal history entries in the db.ckphist table. This new table is not part of the main server database; it need not be backed up and can be deleted at any time. The 'p4 journals' command can be used to diplay information from the db.ckphist table. #644426 (Job #64836) ** More keywords are now available with ktext files: $DateUTC$ - date of file submission, in UTC. $DateTimeUTC$ - date and time of file submission, in UTC. $DateTimeTZ$ - date and time of file submission, in the server's timezone, with the timezone information included in the keyword expansion. #618344 (Job #64824) ** 'p4 unlock' supports the '-x' flag in a distributed installation to enable clearing of orphaned exclusively locked files. #616600 (Job #64822) ** 'p4 opened' supports the '-x' flag in a distributed installation to display files which are opened exclusively across the entire installation. Bugs fixed in 2014.1 #1455848 (Job #88980) ** In replica chaining configurations, replicas which were not directly connected to the master server were not processing archive deletion operations arising from operations such as submission of a binary+S file, deletion of a shelf, obliteration, archive depot operations or retype +l commands. #1352542 (Job #85157) * The MacOSX command line client could fail to complete a parallel sync if two or more parallel transfers attempted to create the same directory in the filesystem at the same time; the failing file transfer would print: "mkdir: /path/to/dir: File exists". #1341013 (Job #84992) ** If an archive file for a local shelf on an Edge Server should become damaged or missing, deleting the shelf, or deleting or replacing that file in the shelf, will now cancel any pending file transfer for that file which was listed in 'pull -l'. #1337988 (Job #84848) ** * 'p4 -Zproxyverbose sync --parallel=...' now correctly displays the diagnostic information about which files were delivered from the proxy's cache. #1335334 (Job #84810) ** 'p4d -c ' uses classic lock order not the new lockless lock order. Fixed. #1242773 (Job #81040) ** The server.locks.archive configurable introduced by #898102 now also applies to the 'p4 restore' command. #1239015 (Job #80722) ** A file which was integrated from a streams depot to a local depot, or vice versa, would be placed into the wrong location in the proxy cache if it was accessed via the proxy by a command such as 'p4 sync' or 'p4 print'. Note that the symptom of this bug is in the proxy cache, but the fix is in the server. #1225187 (Job #74936) ** A 'sync --parallel' command issued via a forwarding replica would complete immediately, but would sync no files. #1213529 (Job #79647) ** p4d -jr would mis-handle the revStatus field if replaying db.rev journal records written by a 2005.2 or older server. #1028809,#1204292 (Job #56707) ** The presence of a client spec with the same name as the TCP/IP address of a replica machine no longer causes that replica to issue the error: "Don't know how to translate paths for OS ''". #1172454 (Job #79504) ** A submit initiated on an Edge Server which failed due to a problem detected after the edge-content trigger had been checked could leave the changelist incorrectly marked as "shelved", and possibly also as "promoted", on the Commit Server, although the changelist was correctly recorded on the Edge Server itself. #1127279 (Job #79353) ** A 'sync --parallel' command which sync'd any files of type 'binary' would write an incorrect value for the 'type' field of the db.have record for the binary file(s). This could cause problems later when integrating changes into these files from other branches. Any workspaces potentially affected by this bug should be sync'd to revision #0 and then re-sync'd for all files of type binary at their convenience in order to rewrite the db.have records. #1065376 (Job #77360) ** In a distributed configuration, the 'edit -n' and 'delete -n' commands for a file of type +l might incorrectly report that the file was opened by another user, though it was not. #1061247 (Job #78830,#78915) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly write its own journal file under conditions of high concurrency on the master, resulting in incorrect behavior and problems with replicas of this replica. #1059769 (Job #78855) * ** 'p4 sync --parallel' now works with certain custom licenses. #1058411 (Job #78785) ** If a replica with rpl.checksum.change set to 2 or higher encountered an internal error processing a changelist checksum note, it would halt replication. Now, it logs the error but resumes replication. #1047418 (Job #78444) ** The replica-specific table db.user.rp is now journaled. This means that the table data will appear in checkpoints, journals and dumps. The replica pull thread automatically filters out all db.user.rp records from its P4TARGET server, which is normally the desired behavior, since records in this table are unique to each replica's activity. However, for maintaining warm standby replicas of other replicas, you can set rpl.replay.userrp=1 for the standby replica to disable the filtering and replicate db.user.rp data. #1045565 (Job #78497) Promoting a shelf, then subsequently deleting it, using the same network connection to the Edge Server could fail to properly delete the shelf. #1042783 (Job #78427) * 'p4 -P sync --parallel' will no longer give authentication errors for the file transfer sub-processes. #1039831 (Job #73075, #74961) ** The revision specifier @client was not working properly for clients bound to a build-server. #1039277 (Job #78383) ** A 'p4 describe' command which accesses a remote promoted shelf now properly reports any communications-related error conditions which occur when retrieving the remote shelf. #1038837 (Job #78164) ** In a distributed environment, the change-failed trigger now runs on the commit server rather than on the edge server. #1037755 (Job #76982) * If a 'p4 sync --parallel' child process encounters an error writing files to the local machine, the parent 'p4 sync' command now returns a non-zero exit status to the operating system. #1036596 (Job #77433) ** In a distributed configuration, 'p4 unshelve' no longer takes the global exclusive file lock for a file of type +l which is unshelved for add. #1035769 (Job #78256) ** A replica running 2014.2 or later which is connected to an earlier master server no longer displays 'Unknown command' when the 'p4 pull -lj' command is run. #1032010 (Job #74056,#71961) ** 'p4 sync --parallel' would fail to expand RCS keywords properly. And 'p4 sync --parallel' would fail with the message "Can't clobber writable file" if the file was changed from filetype binary+w to filetype binary (or text+w to text) by the revision being sync'd. #1031176 (Job #76013) ** 'p4d -xx db.working db.have' could create spurious delete records for db.working if a file opened for move or delete is subsequently moved and submitted by another client and the opened file is then synced to the head revision. #1030313 (Job #77559) ** A build-server replica would incorrectly process the View: field for labels, causing the wrong set of revisions to be specified by the label. #1028372,#1028461 (Job #77558) ** A replica with lbr.replication=cache was not able to access labels using the autoreload option. #1027668 (Job #77595) ** 'p4 export -f' now formats the domain type column correctly for unloaded clients, unloaded labels, and unloaded task streams. #1026707 (Job #77504) ** * 'p4 -Zproxyload sync --parallel=...' now correctly updates the proxy's archive cache without sending files to the client. #1026534 (Job #77280) ** If a change submitted via an Edge Server was rejected by a change-submit or change-content trigger on the Commit Server, the change's files were modified to read-only mode on the client machine rather than being left in writable mode. #1026233 (Job #77435) ** A 'p4 integ' or 'p4 unshelve' command on an Edge Server which failed to open a +l file due to a client-side file transfer error would leave an orphaned lock record in db.excl. #1010386 (Job #77471) ** The 'reload -p' command, used to migrate a workspace from one Edge Server to another, or between an Edge Server and the Commit Server, failed in certain specialized licensing scenarios. #1008489 (Job #77390) ** In a distributed installation, a pending change can be viewed on a server other than the server where the change was created. In such a situation, the pending change will not display a list of open files (the open files are shown only on the owning server). The 'change -d' command would incorrectly allow the pending change to be deleted if the command was issued on a server other than the owning server; this behavior is fixed and the command is now rejected with an appropriate error message. #1004762 (Job #77358) ** Fixed a crash that could occur when unshelving moved files to a different branch. Bugs fixed in 2014.1 PATCH13 #1003287 (Job #77269) ** On a forwarding replica with server.depot.root set, a submit which added new files to a depot with a relative mapping would cache copies of those files in the default location under P4ROOT, instead of in the directory named by server.depot.root #999862 (Job #76686) ** Parallel sync could under some high concurrency scenarios scan too many rows from db.sendq. This has been fixed. #998869 (Job #73278) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly report that a changelist checksum differed if the changelist was submitted by a workspace with SubmitOptions = revertunchanged and at least one unchanged file was reverted during the submission of that changelist. #965257 (Job #61632) ** The pull and pull -u threads of replica servers no longer retain an open file handle to the journal file on the master server when they are otherwise idle. #954124 (Job #75844) ** In certain chained replica configurations, updates to 'p4 server' specs on the master server were not propagated beyond the first replica on the chain. #949563 (Job #75718) ** On an Edge Server, 'p4 print -o' of a remote shelf mishandles the name of the output file. #932013 (Job #71795) ** A better error message is issued when accidentally attempting to use a Commit Server-bound workspace on an Edge Server. Also, the 'p4 clients -s NNN' and 'p4 labels -s NNN' commands now print the complete list of clients/labels when NNN is the Commit Server's serverid. Bugs fixed in 2014.1 PATCH8 #902281 (Job #70245) ** This change improves performance of 'p4 archive' against large datasets. Multiple scans have now been reduced to a single scan of pending integration data. #901816 (Job #74020) ** When migrating client workspaces from commit servers to edge servers, promoted shelves are no longer accessible on the edge server they are bound to. This change allows unshelve to automatically pull metadata and content to the server with the correct ownership. Bugs fixed in 2014.1 PATCH7 #898102 (Job #74160) ** Heavy use of the 'p4 archive' command can block other commands due to server locks. With 'peeking' enabled server.locks.dir cannot be disabled. To turn-off this long duration lock for archive set server.locks.archive=0. Bugs fixed in 2014.1 PATCH6 #893234 (Job #73768) ** 'p4 clean' will no longer attempt to take exclusive depot file locks in a distributed environment. #889286 (Job #72677) ** 'p4 copy' will no longer attempt to exclude source revisions that have previously been marked as ignored. #886610 (Job #63251) ** The forwarding replica and edge server configurations now accept the optional username argument on the 'p4 login' and 'p4 logout' commands. #886584 (Job #73402) ** 'p4 renameuser' would fail to completely rename the user. Bugs fixed in 2014.1 PATCH5 #882067 (Job #73412) ** Replication can be halted due to lock-order issues when the configurable rpl.checksum.change is set to a value of 2 or more. This problem can only happen if the master server and the replica server are both running in lockless mode and if two concurrent submits (one with integration history) interleave transactions. #880506 (Job #71725) ** The istat.mimic.ichanges configurable controls the reporting of revisions between stream and parent. If set, istat will not report cherry-picked revisions already present in the target. The default behavior will report any changes not credited, even when the content may already be in the target. #877872 (Job #73313) ** An 'annotate', 'diff', 'diff2', 'describe', or 'resolve' command which used the '-db' or '-dw' flags could crash if one of the file revisions processed by the command was exactly 65,536 bytes in size. Bugs fixed in 2014.1 PATCH4 #875393 (Job #72649) ** 'p4d -xf 71917' could promote unpromoted shelved changes from a 2014.1 edge server. This has been fixed. #874978 (Job #73263) ** When using streams the dynamic view generator could crash on parsing a very long stream path. (Job #73265) ** This version addresses the SSL/TLS MITM CVE-2014-0224 vulnerability in OpenSSL by linking in version 1.0.1h Bugs fixed in 2014.1 PATCH3 #870919 (Job #73199) ** 'p4 verify' has been added to the list of files that can run in lockless mode #870334 (Job #72151) ** 'p4 annotate -I' now works correctly with the '-dw' flag. #870199 (Job #73184) ** Highly concurrent server submit operation could cause corruption of tables db.integed and db.resolve. Fixed. Bugs fixed in 2014.1 PATCH2 #853209 (Job #72629) ** 'p4 fstat @=' from an edge server would not automatically fetch meta-data for a remote shelf unless the -Rs option was specified. #850073 (Job #72842) ** 'p4 submit' will no longer record revisions with invalid archive paths after unshelving an integrated file through a branch view. #849654 (Job #72162) ** Commands which must find lazy copies, i.e. obliterate, retype, and fstat -Oz, could cause stack overflows when there are many branches against the same file. Fixed. #849566 (Job #72816) ** The Edge Server algorithm for handling the replication of a large 'p4 obliterate' command is now more efficient. #844664 (Job #72542) ** 'p4 fstat' will no longer return 'isMapped' twice on files that are open for move/add. #844110 (Job #72726) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly report that a changelist checksum differed if the changelist contained moved files which had previously been moved by an earlier changelist (and both moves were lazy copies) #844029 (Job #72471) ** 'p4 renameuser' no longer corrupts the user's stored password. #843871 (Job #72411) ** 'p4 admin journal' and 'p4d -jj' could incorrectly rotate the server's journal on a heavily loaded Linux server, resulting in some journal records which were generated after the journal rotation being written to the end of the already-rotated journal. Bugs fixed in 2014.1 PATCH1 #840418 (Job #72690) ** 'p4 diff2 //file#head //file@=' where the shelved changelist was 'promoted' in a commit/edge server configuration could crash the server. #834556 (Job #72533) ** 'p4 fstat' in a distributed environment (commit/edge) was not reporting other server exclusive lock opens. #827741 (Job #72275) ** The maximum line length for an RCS keyword file is now configurable, set via lbr.rcs.maxlen. The default has been increaed to 10M. #827683 (Job #72399) ** The server could crash if it failed to open the journal. #826998 (Job #71750) ** On Windows, a protects table entry that uses an IPv4 address with CIDR notation may not match the correct addresses if it has an octet that begins with a 0 digit and has a following octet whose value is greater than 7. #826594 (Job #72180) ** Triggers now set %serverip% to IP address rather than to hostname. #826586 (Job #72298) ** The mode of the lbr.replication configurable is now reported in the tagged output for 'p4 info' when the value is set. #825277 (Job #72301) ** Tagged output for 'p4 shelve -a leaveunchanged' now reports the files that have not been shelved due to being unchanged. #824742 (Job #71917) ** Upgrade from a pre-2014.1 commit server will not automatically cause promotion of the shelved changes on the commit server. 'p4d -xf 71917' can be used to promote all shelved changes on a commit server. #824528 (Job #72062) ** 'p4 shelve -r -a leaveunchanged' resulting in a shelved change being deleted could leave an empty shelved change with no files. This has been fixed. #817279 (Job #71661) ** 'p4 reconcile -n' will no longer take an exclusive lock. In a distributed environment this could cause orphaned exclusive locks. This has been fixed. #816430 (Job #72113) ** A file that has been moved into the place of a previously moved file, and then moved back to its original name, can now be merged at the same time as the file whose place it was moved into, provided that the current filenames do not conflict. #816057 (Job #71614) ** A streams command may not return all streams when running in a long-running connection and a new stream depot and stream are created in a more recent connection. This has been fixed. #815663 (Job #72028) ** Merges into a task stream will now correctly track repeated renames in the parent. Bugs fixed in 2014.1 #834175 (Job #72533) ** 'p4 fstat' in a distributed environment (commit/edge) was not reporting other server exclusive lock opens. #827741 (Job #72275) ** The maximum line length for an RCS keyword file is now configurable, set via lbr.rcs.maxlen. The default has been increaed to 10M. #827683 (Job #72399) ** The server could crash if it failed to open the journal. #826586 (Job #72298) ** The mode of the lbr.replication configurable is now reported in the tagged output for 'p4 info' when the value is set. #825277 (Job #72301) ** Tagged output for 'p4 shelve -a leaveunchanged' now reports the files that have not been shelved due to being unchanged. #824742 (Job #71917) ** Upgrade from a pre-2014.1 commit server will not automatically cause promotion of the shelved changes on the commit server. 'p4d -xf 71917' can be used to promote all shelved changes on a commit server. #824528 (Job #72062) ** 'p4 shelve -r -a leaveunchanged' resulting in a shelved change being deleted could leave an empty shelved change with no files. This has been fixed. #817279 (Job #71661) ** 'p4 reconcile -n' will no longer take an exclusive lock. In a distributed environment this could cause orphaned exclusive locks. This has been fixed. #816430 (Job #72113) ** A file that has been moved into the place of a previously moved file, and then moved back to its original name, can now be merged at the same time as the file whose place it was moved into, provided that the current filenames do not conflict. #816057 (Job #71614) ** A streams command may not return all streams when running in a long-running connection and a new stream depot and stream are created in a more recent connection. This has been fixed. #815663 (Job #72028) ** Merges into a task stream will now correctly track repeated renames in the parent. #803197 (Job #70703,71826) ** The tagged form of the 'p4 submit' command against an Edge Server was returning messages from the Commit Server in non-tagged form. #797554 (Job #71642) ** Renames that occurred prior to a file being re-added will no longer be considered when integrating from that file unless an 'add from' record bridges the deletion. #794583 (Job #45366, #71436) ** 'p4 -Ztag groups -m' could return less than the -m number of group data. This has been fixed. #792056 (Job #71418) ** 'p4d -jr -s j1 j2 j3 ...' only re-journaled the database updates for the first journal named on the command line. #790488 (Job #71314) ** 'p4 unshelve -s -c ' would fail to report if the shelved change was already committed, but instead would report "No such file(s)". This has been fixed. #784547 (Job #71137) ** It was possible to delete a shelf with pending resolves scheduled against a different depot file (via unshelve -b). This has been fixed so that the shelf deletion is now blocked. #783372 (Job #69572) ** Stream and StreamAtChange fields of a client specification were not being validated during the editor session, which could cause other spec data updated during the session to be lost. This has been fixed. #782990 (Job #64713) ** Prevent a file which is already opened in a numbered change from being reopened by another user who does not own the change but who is sharing the workspace of the owner of the change. This could have occurred when the '-c' was absent on the reopen command. #777730 (Job #70950) ** A 'p4 revert' command which ran concurrently while a 'p4 shelve' command was underway using the same workspace and changelist could cause that shelve command to crash, if the shelve command included certain undocumented arguments. #777200 (Job #70696,#70962) With 'db.peeking' enabled in 2013.3, long running (overlapping) 'p4 sync' operations would block 'p4 obliterate' from running. A 'sync -s' or client with the 'allwrite' option during a sync can cause a Server fault if max results is hit. This has been corrected. #775130, #774830 (Job #70845, #70906) ** Some merge cases involving files being moved, deleted, and readded in unusual ways are now handled better. #772218 (Job #70760) ** A situation in which 'p4 integrate' could give a mapping error with a blank path has been fixed to give the correct error. #771811 ** The undocumented tunable rpc.deliver.duplex now defaults to 1. This means that the behavior described in change 671142 is now opt-in, rather than opt-out; you must explicitly set rpc.deliver.duplex=0 to enable the change 671142 behavior. #769878 (Job #66184) ** Merges made into a task stream from a stream other than its parent will now be 'promoted' and publicly visible. Note that task streams become less lightweight as more files are promoted, so it is recommended that task streams only merge/copy to and from their parent streams. #769770 (Job #68423) ** The 'p4 logrotate' command was not correctly rotating structured server logs with names that didn't include a file extension (.csv). #769683 (Job #34428) ** The 'p4 logtail' command now reports the file offset correctly when run against a Windows server. #769476 (Job #64593) ** The 'p4 pull' command now defaults to '-P serverid' if the replica has a serverid and no -P flag has already been specified. #768121 (Job #70627) ** 'p4 interchanges' could report extra changes in cases where a file had multiple sequential delete revs. This has been fixed. #768000 (Job #70626) * ** Allow zero line context and unified diff output. #767850 (Job #69355) ** 'p4 reconcile -n' and all of its aliases now only require 'read' permission on the files in its path to show what needs to be reconciled. #767206 (Job #70620) ** It was possible for 'p4 integrate' of a file that was moved in two different branches to be matched up with the wrong variant of the file if it had been deleted and re-added in one of the branches prior to being moved. This has been fixed. #767009 (Job #70548) ** 'p4 shelve -c' now gives a 'files not opened in that change' error rather than 'no such files' when there are no files to shelve. #765126 (Job #69975) ** The dm.proxy.protects configurable may be used to control the behavior of the protections table for connections made via proxies, brokers, forwarding replicas, or Edge Servers. For more information, please see 'p4 help protect'. #764636 (Job #70559) ** 'p4 list -M' on a forwarding replica or Edge Server was forwarding the list command to the central server, but was also incorrectly creating an empty list on the forwarding replica or Edge Server. #763622 (Job #42297) * A failed 'p4 revert' on Windows will no longer make the workspace file read-only. #745928 ** Command arguments in structured logs can now be up to 4096 characters before they are elided (previously it was 80.) #758833 (Job #70224) ** 'p4 submit' from an edge server could hang if the server.locks.dir configurable was set to the same absolute path on both the edge and commit servers. This has been fixed. #753081 (Job #69991,#69986) * ** *** Under some unusual circumstances a client network error could cause the broker to hang and use 100% of a cpu core. Also, some network requests that experienced a transient error were not automatically retried. #752957 (Job #70168) ** A performance problem in 'p4 archive' introduced by change 696998 is addressed. The performance of 'p4 archive' now correctly depends on the number of revisions being archived, not on the total number of revisions examined by the 'p4 archive' command. #750787 (Job #70120) * On Mac OS X (and the Darwin build also) syncing a file might fail with Operation not permitted because of the user immutable flag on files. We now remove this flag to complete the file transfer. #749425 (Job #69604) ** 'p4 istat' in a merge direction did not indicate all outstanding changes reported by 'p4 merge'. Regardless if the the content in the target stream was correct, 'p4 istat' did not report identical change information reported by 'p4 merge'. #749946 (Job #29923, #70101) * UTF16 file detection changed to help block audio files from being detected as UTF16. Files which start with a UTF16 BOM (Byte order mark) but which are not valid UTF16 or do not meet some textual tests will be considered binary. #744802 (Job #69776) ** A server with security=3 which uses a P4AUTH server that has an auth-check trigger defined will no longer perform password strength checking, since the external authentication system is responsible for enforcing password strength requirements. #740482 (Job #69603) * Conversions between the different Unicode UTF formats allow the code positions U+FFFE and U+FFFF now. These are 'sentinels' not characters and do not have printable forms, but are translatable. #740373 (Job #69859) ** An Edge Server with lbr.replication=cache or lbr.replication=shared would incorrectly schedule archive transfer requests in the rdb.lbr table. #738762 (Job #69824) ** For the 'p4 describe', 'p4 diff', and 'p4 diff2' commands, specifying a value of N for the -dc[N] and -du[N] flags that is greater than 2147483647 is now quietly ignored. #730272 (Job #69436) ** 'p4 status' would prefix bad characters on output lines if the file argument had leading '.' or '..' characters. This has been fixed. #728082 (Job #69043) ** 'p4 reviews -C ' with an all-numeric field for would fail in a distributed environment. This has been fixed. #727757 (Job #69257) ** 'p4 submit' will now fail if attempting to submit a branch or copy of a revision that has since been obliterated or purged. #727035 (Job #69492) ** The 'p4 servers' command would incorrectly display servers of type 'broker' as 'invalid'. #718736 (Job #69194) ** 'p4 export -f' against an Edge Server could crash the Edge Server if it encountered journal records for Edge Server-initiated submits. #714378 (Job #68988) ** Files that were shelved for 'add'like operations were retaining their resolve records (add, branch, or move) when unshelved over existing depot files as 'edit' operations. Since those resolve record types do not make sense for 'edit' revisions, they are now dropped when those actions are converted to 'edit'. #709281 (Job #68824) ** Updating an autoreload label would write the updated label contents to a new unload file rather than rewriting the original unload file if spec.hashbuckets had been changed since the label was first created. #707928 (Job #52982) ** 'p4 obliterate' will now clear the cache used by 'p4 istat' when deleting revision records within a stream. Previously it was possible for 'p4 istat' to return stale results after an obliterate. #707664 (Job #68752) ** 'p4 counters -m' might display more counters than the -m limit if one or more of the system configurables 'monitor', 'security', 'unicode', 'minClient', or 'minClientMessage' were set. #704245 (Job #67904) ** 'p4 fstat -e -Rs -Ol" now reports the file size and digest of files shelved at the specified change. Previously it reported the size and digest of files at the head revision. #699932 (Job #19001) * The modtime client setting and +m file type modifier now only set the file modification time. Previous versions would also set the file access time to the same value as the modificiation time. #698965 (Job #68292) ** The diff '-dw' and '-db' flags would fail to ignore whitespace at the end of a file that did not end with a newline. #697571 (Job #68302) ** A 'p4 restore' command with multiple filespec arguments will no longer halt at the first filespec argument for which no revisions can be restored. #696453 (Job #65901) ** 'p4 changes -s restricted' and 'p4 changes -s invalid' used to return bogus data. Now these commands return an error message. #687657 (Job #67951) ** A rare case where ignore credit could be lost in the process of overwriting a change via copy has been corrected. #685799 (Job #67698) ** Integrating and resolving a moved file would sometimes suggest ignoring the move when it had been copied over by another file. This has been corrected. #672366 (Job #70860) ** When a 'copy' content resolve is combined with an 'ignore' filetype resolve it will now be recorded as a 'merge' to ensure that the copy does not override the outstanding filetype difference. #659164 ** 'p4 reconcile' will now detect files that have been added to the workspace in locations that map to existing (unsynced) depot files. #644128 (Job #66194) ** 'p4 logstat -l journal' now works as documented. #642804 (Job #66179) ** For some types of file damage, 'p4 verify' will now print "BAD!" where formerly it printed "MISSING!". -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r13.3/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Important changes to perforce database tables 2013.3 ** NEW DATABASE FORMAT ** This release contains major changes to the perforce database implementation (BTREE). These changes are not compatible with the previous version (i.e. this is NOT a drop-in upgrade) and requires a restore from a checkpoint (note the journal format has not changed). This release is functionally the same as 2013.2 apart from the new btree format and the improved concurrency that can be enabled with these database changes. Before checkpointing your existing database, please read the release note for Job #68870 carefully to see if it applies to you. Major new functionality in 2013.3 #616010 (Job #64576, #64577) ** Improved concurrency through lockless reads. This release benefits from a new type of perforce lock known as 'peeking'. When 'peeking' is enabled many common commands no longer block other commands attempting to update tables. Consistency is applied through a new counter 'maxCommitChange' obtained at the beginning of each command and through client entity locks, which are fine-grain unique client locks that prevent concurrent read/write access to an individual client. A slightly different table lock-order is used with 'peeking' enabled, this is due to requirements when multiple tables are accessed with a mixture of read and peek. Also, submit is broken into 2 transactions, the first is the update to key tables (i.e. the bulk of the submit) the second is an update to the submitters client data, this reduces the overall update lock time for a submit. Lockless reads are enabled when starting the server with the command line option '-vdb.peeking=2' or by the configurable 'db.peeking' followed by a server restart. e.g. 'p4 configure set db.peeking=2' (needs server restart). value 0 disabled (default) 1 new lock-order / entity locks (diagnostic only) 2 peeking enabled (hx/dx optimization on) 3 peeking enabled (hx/dx optimization off) A typically installation would run with peeking set to 2, the value 3 is only intended for certain repositories as it carries a trade-off between concurrency and command completion speed. If your repository has many revisions per file then setting a value of 3 may cause some commands to complete slower but will not require read locks on the db.revhx/db.revdx tables. List of commands that run lockless (peeking enabled): annotate, branches, changes, clients, counters, depots, diff, diff2, dirs, filelog, files (-a) fixes, fstat (peeking=3), have, interchanges, integ, integed, istat, jobs, keys, labels, merge, print (-a), resolved, streams, sizes (-a), sync (peeking=3), users List of commands that run partial lockless (peeking enabled): copy, cstat, fstat, interchanges (copy), istat (copy), opened, sync NOTE: With 'peeking' server.locks.dir can no longer be disabled, that is because these locks are required for client consistency. If you are a customer who has disabled this in the past due to problems with syncs, you can turn-off the longer duration lock by setting server.locks.sync=0. Minor new functionality in 2013.3 #685514 ** This release has made changes to the way that 'p4 sync' manages its memory consumption. For all cases memory usage has been reduced (up to 50% for initial syncs and forced refresh). #662490 ** Due to the heavy reliance on server.locks for better concurrency the default value for spec.hashbuckets has been changed to 99. Typically this value has already been increased from its previous default of zero. Bugs fixed in 2013.3 #1239015 (Job #80722) ** A file which was integrated from a streams depot to a local depot, or vice versa, would be placed into the wrong location in the proxy cache if it was accessed via the proxy by a command such as 'p4 sync' or 'p4 print'. Note that the symptom of this bug is in the proxy cache, but the fix is in the server. #1213529 (Job #79647) ** p4d -jr would mis-handle the revStatus field if replaying db.rev journal records written by a 2005.2 or older server. #1061247 (Job #78830,#78915) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly write its own journal file under conditions of high concurrency on the master, resulting in incorrect behavior and problems with replicas of this replica. #1058411 (Job #78785) ** If a replica with rpl.checksum.change set to 2 or higher encountered an internal error processing a changelist checksum note, it would halt replication. Now, it logs the error but resumes replication. #1047418 (Job #78444) ** The replica-specific table db.user.rp is now journaled. This means that the table data will appear in checkpoints, journals and dumps. The replica pull thread automatically filters out all db.user.rp records from its P4TARGET server, which is normally the desired behavior, since records in this table are unique to each replica's activity. However, for maintaining warm standby replicas of other replicas, you can set rpl.replay.userrp=1 for the standby replica to disable the filtering and replicate db.user.rp data. #1039831 (Job #73075, #74961) ** The revision specifier @client was not working properly for clients bound to a build-server. #1036596 (Job #77433) ** In a distributed configuration, 'p4 unshelve' no longer takes the global exclusive file lock for a file of type +l which is unshelved for add. #1035769 (Job #78256) ** A replica running 2014.2 or later which is connected to a 2013.2 master server no longer displays 'Unknown command' when the 'p4 pull -lj' command is run. #1031176 (Job #76013) ** 'p4d -xx db.working db.have' could create spurious delete records for db.working if a file opened for move or delete is subsequently moved and submitted by another client and the opened file is then synced to the head revision. #1030313 (Job #77559) ** A build-server replica would incorrectly process the View: field for labels, causing the wrong set of revisions to be specified by the label. #1028751 (Job #56707) ** The presence of a client spec with the same name as the TCP/IP address of a replica machine no longer causes that replica to issue the error: "Don't know how to translate paths for OS ''". #1028372,#1028461 (Job #77558) ** A replica with lbr.replication=cache was not able to access labels using the autoreload option. #1027668 (Job #77595) ** 'p4 export -f' now formats the domain type column correctly for unloaded clients, unloaded labels, and unloaded task streams. #1010386 (Job #77471) ** The 'reload -p' command, used to migrate a workspace from one Edge Server to another, or between an Edge Server and the Commit Server, failed in certain specialized licensing scenarios. #811622 (Job #71819) ** 'p4d -xf 71819' may now be used to clear invalid or unnecessary charset values from the database. Note that this will scan the entire revision table. #811455 (Job #71765) ** 'p4 reopen' will no longer set a charset on a non-Unicode file. #799439 (Job #71686) ** 'Accept theirs' charset resolves from revisions with corrupt charset values will no longer cause a crash. #798198 (Job #71648) ** A case in which a file with multiple sequential deleted revisions could require integration unnecessarily has been fixed. #782068 (Job #71155) ** 'p4d -xx db.working db.have' could create spurious delete records for db.working if a file opened for edit is subsequently moved and submitted by another client and the opened file is then synced to the head revision. #781820 (Job #70845, #70906) ** Some merge cases involving files being moved, deleted, and readded in unusual ways are now handled better. Bugs fixed in 2013.3 PATCH2 #778881 (Job #70696) ** With 'db.peeking' enabled in 2013.3, long running (overlapping) 'p4 sync' operations would block 'p4 obliterate' from running. #778845 (Job #70908) ** Disabling the db.peeking level and then running 'p4 admin restart' would not change the lock order back correctly, resulting in lock order errors. #778057 (Job #70962) ** A 'sync -s' or client with the 'allwrite' option during a sync can cause a Server fault if max results is hit. This has been corrected. #777796 (Job #70950) ** A 'p4 revert' command which ran concurrently while a 'p4 shelve' command was underway using the same workspace and changelist could cause that shelve command to crash, if the shelve command included certain undocumented arguments. #774784 (Job #69991) *** Under some unusual circumstances a client network error could cause the broker to hang and use 100% of a cpu core. #773134 (Job #70702) ** With 'peeking' enabled and a very high submit concurrency rate, the maxCommitChange counter may get updated in the wrong order. This bug might cause some transient inconsistency (most likely with aggressive automation that tracks submits). #772545 (Job #70700) ** A long running connection that switches between task and non-task streams could run into lock order issues when issuing a submit. The error "Locking failure: db.revtx locked after db.revdx!" would be observed on submit. A subsequent attempt to submit the change would result in success. Bugs fixed in 2013.3 PATCH1 #768990 (Job #70620) ** It was possible for 'p4 integrate' of a file that was moved in two different branches to be matched up with the wrong variant of the file if it had been deleted and re-added in one of the branches prior to being moved. This has been fixed. #768126 (Job #70627) ** 'p4 interchanges' could report extra changes in cases where a file had multiple sequential delete revs. This has been fixed. #760537 (Job #70422) ** With 'peeking' enabled on a forwarding-replica, the entity locks used to maintain client consistency were not being correctly released. #755431 (Job #70230) ** With 'peeking' enabled, remote depot files with a change number greater than the maxCommitChange value would be ignored. #753191 (Job #70144) ** A case involving integration of files with a tricky combination of prior ignore and copy records is now handled better. #752970 (Job #70168) ** A performance problem in 'p4 archive' introduced by change 696998 is addressed. The performance of 'p4 archive' now correctly depends on the number of revisions being archived, not on the total number of revisions examined by the 'p4 archive' command. #749884 (Job #69604) ** 'p4 istat' in a merge direction did not indicate all outstanding changes reported by 'p4 merge'. Regardless if the the content in the target stream was correct, 'p4 istat' did not report identical change information reported by 'p4 merge'. #748216 (Job #70041) ** Resolve will no longer give a false "already opened" error when resolving an edited depot file against a moved depot file. #745284 (Job #69946) ** Integrate will now consider all reverse integration records between the source and target when trying to determine whether the files share a close enough connection that scanning for renamed variants is not necessary. #744839 (Job #69776) ** A server with security=3 which uses a P4AUTH server that has an auth-check trigger defined will no longer perform password strength checking, since the external authentication system is responsible for enforcing password strength requirements. Bugs fixed in 2013.3 #736593 (Job #69548) ** p4 resolve' no longer crashes when attempting to handle database records with invalid file charset values. #723545 (Job #69286, #69288) ** An update command submitted via a forwarding replica which is interrupted while it is waiting for replication processing to complete will no longer cause unnecessary system resource usage in the forwarding replica. #716980 (Job #68870) ** On a case-insensitive server, the 'p4 server' command was incorrectly allowing the creation of two separate server specs with ServerIDs that differed only in case. Additionally, the 'p4 servers' command was displaying the list of server specs in case-sensitive sorting order on a case-insensitive server, and the 'p4 configure show ' command was only showing configuration variables for the server which matched exactly in case. Starting with this change, case-insensitive servers will process the ServerID value using case-insensitive matching. Due to the new database format introduced with this release, a restore from checkpoint is required. On a case-insensitive server, this restore will have the following effects on the existing server specs: 1) If there are multiple server specs with ServerIDs that differ only in case, all but one of those server specs will be deleted; only the last server spec will be retained. 2) The sort order of the existing server specs will be repaired, so that the 'p4 servers' command now displays them in case-insensitive sort order. If you are operating a server in case-insensitive mode, then prior to upgrading to this release, you should run 'p4 servers' and see if you have multiple server specs for the same case-insensitive ServerID. If you do, use 'p4 server -d' to delete the unwanted server specs before checkpointing and restoring your database, to ensure that the correct server spec is retained. -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r13.2/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Major new functionality in 2013.2 #616528 ** The new 'p4 integrate' engine made available in 2011.1 and refined in subsequent releases is now the default. Sites which are using streams, or which have set the dm.integ.engine configurable to an explicit value, will not see any difference in behavior. Sites which wish to continue using the old (2006.1) integration logic must set the dm.integ.engine configurable to '2'. Sites switching to the new engine should expect the following changes: 1) New types of resolve scheduled for differences other than content: filename, filetype, attribute, etc. Note that in order to resolve differences in filename, move/add and move/delete revisions must be integrated together in pairs; attempting to integrate only half of a moved file pair will by default result in an error. 2) Many situations which used to cause integrate to fail with an error and prompt for a flag in order to verify the user's intent will now instead result in a resolve. For example, files which have been deleted in the source and edited in the target may now be resolved such that the user can choose to accept or ignore the deletion. 3) Base selection now considers the individual edits made to each file in order to more accurately propagate changes. #575959 (Job #58134, #59015, #60774) ** The 'p4 server' spec now allows the definition of two new types of Perforce server nodes: Commit Server, and Edge Server. An installation with exactly one Commit Server, one or more Edge Servers, and (optionally) other replicas, proxies, and brokers, supports Federated Server functionality. An Edge Server is a Forwarding Replica which independently supports local work in progress. A Commit Server is a master Perforce server which cooperates with each Edge Server to support submitting that work via the Edge Server. Most work which requires a client workspace is performed directly on the Edge Server, and is fully offloaded from the Commit Server. Most administrative work, including the commands which edit most spec objects, is performed on the Commit Server, and is automatically forwarded when a spec command ('p4 protect', 'p4 group', 'p4 stream', etc.) is issued against an Edge Server. Since Edge Servers support distinct sets of work in progress, they must be adequately provisioned, securely administered, and reliably backed up; please contact Perforce Technical Support if you need assistance in planning or deploying Edge Server instances in your environment. Minor new functionality in 2013.2 #716174 (Job #68945) ** A Windows Commit Server might crash under heavy load. #681927 (Job #65134) ** 'p4 list' now accepts the '-C client' flag. This option limits the files to those mapped through the users client workspace. #671247 (Job #67318) ** 'p4 reviews' now accepts the '-C client' flag. This option limits the files to those opened in the specified clients workspace (can be used with -c). #668192 (Job #60133) ** The 'p4d -jd' and 'p4d -jr' commands now support '-k/-K' flags for table-level filtering. These flags are uncommon, and are generally used only by Perforce technical support. #647654 (Job #66372) ** The lbr.replication configurable for a replica now accepts the new setting 'cache'; see 'p4 help replication' for details. Also, the rpl.verify.cache configurable can be specified to instruct the replica to verify archive digests on every reference (this can be expensive). Some variants of 'shelve -r' and 'shelve -f' now write additional @dl@ journal records describing the archive files that are being replaced in the shelf. #639050 (Job #66099) ** 'p4 sizes' now accepts the '-A' flag to display file size information for files in the Archive depot. #625219 (Job #64412) ** 'p4 property -l -A' now includes the property sequence number in its output. #623802 (Job #2054, #65142) ** 'p4 diff' and 'p4 diff2' now support a '-Od' flag to limit their output to differing files only. #623464 (Job #64868) ** Set security=4 to specify that authenticated service users must be used for all replica server and remote depot connections to this server. #618347 (Job #61231,#40707) ** 'p4 unshelve' will now schedule a branch resolve when unshelving an edit to a file that has been deleted or that does not exist. #618344 (Job #64824) ** 'p4 unlock' supports the '-x' flag in a distributed installation to enable clearing of orphaned exclusively locked files. #616600 (Job #64822) ** 'p4 opened' supports the '-x' flag in a distributed installation to display files which are opened exclusively across the entire installation. #616051 (Job #52759) ** 'p4 sync' now defaults to the '-s' behavior for clients with 'allwrite' and 'noclobber' set. #615297 (Job #63617) ** 'p4 submit' will now record 'branch' and 'copy' resolve records that come from earlier revisions of the same file as permanent integration records. This makes it possible to record that an earlier revision was copied over a later one to roll it back. #612073 (Job #64526) * ** 'p4 reconcile' and 'p4 status' will now attempt to convert 'add' and 'delete' actions into paired 'move/add' and 'move/delete' actions by comparing the added client files to the depot versions of their missing counterparts. #605110 (Job #63955,#66716) ** 'p4 revert' now accepts a '-w' flag to indicate that files which are open for add should be deleted (wiped) from the workspace. #604353 (Job #60118,#62068) ** The server spec for a replica server now contains a new optional field, named ArchiveDataFilter. This field can be used to specify the files which are to be immediately scheduled for transfer to the replica upon submit. Other files in the repository are still available to the replica users, but since they were not fetched immediately by the pull -u threads, there will be a delay when they are first referenced while they are transferred from the master. #603759 (Job #64097, #64098) ** 'p4 -ztag info' now reports on the status of the client workspace lock, if called with a valid client. Also, administrators may set server.locks.sync=0 to specify that the sync command should not take the client workspace lock at all; at the default setting of 1, the client workspace lock is taken in shared mode as before. #602564 (Job #56252) ** 'p4 verify' now accepts the '-s' flag to indicate that, in addition to verifying the file's digest, the file's size should also be verified. 'p4 verify -t' no longer implies the '-s' flag; specify '-s' explicitly to cause 'verify -t' to verify the size. #601710 (Job #59275) ** Files that have been moved and are open for edit at an older revision may now be scheduled for a filename resolve by syncing to the move/delete revision. Accepting the new filename will move the open file, similar to 'p4 move -f', allowing the edit to be submitted under the new filename. #599833 (Job #59476) ** The 'p4 clients' and 'p4 labels' commands now take the -a and -s flags, which are useful when running in replicated configurations. #597710 (Job #21852) ** The configurable server.commandlimits can be set to a non-zero value to disable the use of command-line overrides for the MaxResults, MaxScanRows, and MaxLockTime limits defined in the group specs. Set server.commandlimits=1 to allow per-command flags to specify lower, but not higher, resource limits, and set it to the value 2 to quietly ignore command-line resource limits entirely. #591780 (Job #61585) ** Various improvements have been made to the 'p4 journaldbchecksums' command and to related tools for monitoring the integrity of replica servers in a multi-server installation. Administrators who have one or more replica servers deployed should: a) ensure they have an 'integrity.csv' log defined for all servers b) configure the new rpl.checksum.* configurables for the appropriate level of integrity checking c) routinely monitor the integrity.csv file for issues d) use the new features of the 'journaldbchecksums' command to investigate and resolve server integrity problems that arise. #589668 (Job #41143) * ** When connecting to unicode-enabled servers, a default value for the client's P4CHARSET will now be chosen based on the platform and code page if P4CHARSET is not set explicitly. #588464 ** A server which has a non-empty serverid, but does not have a P4NAME specified, will now use the serverid as the P4NAME. We recommend that all servers should be configured with a serverid, and you should use the serverid in your 'p4 configure' commands to specify the configuration for that server. Specifying the P4NAME or -In value when starting the server is then no longer necessary. #586875,#677508 (Job #67550) ** Trigger definitions can now request the expansion of three new trigger variables: %servername% is set to the value of the server's P4NAME; %serverid% is set to the value of the server's server.id. In a distributed installation, %submitserverid% is set to the server.id of the Commit Server or Edge Server where the submit command was run. #569772 (Job #62259) * On Windows, 'p4 set -S ' will now issue an error message if there is no corresponding sub-key in the Windows registry. Bugs fixed in 2013.2 #1239015 (Job #80722) ** A file which was integrated from a streams depot to a local depot, or vice versa, would be placed into the wrong location in the proxy cache if it was accessed via the proxy by a command such as 'p4 sync' or 'p4 print'. Note that the symptom of this bug is in the proxy cache, but the fix is in the server. #1213529 (Job #79647) ** p4d -jr would mis-handle the revStatus field if replaying db.rev journal records written by a 2005.2 or older server. #1061247 (Job #78830,#78915) ** A replica with rpl.checksum.change set to 2 or higher might incorrectly write its own journal file under conditions of high concurrency on the master, resulting in incorrect behavior and problems with replicas of this replica. #1058411 (Job #78785) ** If a replica with rpl.checksum.change set to 2 or higher encountered an internal error processing a changelist checksum note, it would halt replication. Now, it logs the error but resumes replication. #1047418 (Job #78444) ** The replica-specific table db.user.rp is now journaled. This means that the table data will appear in checkpoints, journals and dumps. The replica pull thread automatically filters out all db.user.rp records from its P4TARGET server, which is normally the desired behavior, since records in this table are unique to each replica's activity. However, for maintaining warm standby replicas of other replicas, you can set rpl.replay.userrp=1 for the standby replica to disable the filtering and replicate db.user.rp data. #1039831 (Job #73075, #74961) ** The revision specifier @client was not working properly for clients bound to a build-server. #1036596 (Job #77433) ** In a distributed configuration, 'p4 unshelve' no longer takes the global exclusive file lock for a file of type +l which is unshelved for add. #1035769 (Job #78256) ** A replica running 2014.2 or later which is connected to a 2013.2 master server no longer displays 'Unknown command' when the 'p4 pull -lj' command is run. #1031176 (Job #76013) ** 'p4d -xx db.working db.have' could create spurious delete records for db.working if a file opened for move or delete is subsequently moved and submitted by another client and the opened file is then synced to the head revision. #1030313 (Job #77559) ** A build-server replica would incorrectly process the View: field for labels, causing the wrong set of revisions to be specified by the label. #1028751 (Job #56707) ** The presence of a client spec with the same name as the TCP/IP address of a replica machine no longer causes that replica to issue the error: "Don't know how to translate paths for OS ''". #1028372,#1028461 (Job #77558) ** A replica with lbr.replication=cache was not able to access labels using the autoreload option. #1027668 (Job #77595) ** 'p4 export -f' now formats the domain type column correctly for unloaded clients, unloaded labels, and unloaded task streams. #1010386 (Job #77471) ** The 'reload -p' command, used to migrate a workspace from one Edge Server to another, or between an Edge Server and the Commit Server, failed in certain specialized licensing scenarios. #960002 (Job #73909) ** When a workspace on an Edge Server was used to merge new files into a task stream, the workspace's have records were not properly updated at the completion of the submit. #870882 (Job #72411) ** 'p4 admin journal' and 'p4d -jj' could incorrectly rotate the server's journal on a heavily loaded Linux server, resulting in some journal records which were generated after the journal rotation being written to the end of the already-rotated journal. #777730 (Job #70950) ** A 'p4 revert' command which ran concurrently while a 'p4 shelve' command was underway using the same workspace and changelist could cause that shelve command to crash, if the shelve command included certain undocumented arguments. #753181 (Job #70144) ** A case involving integration of files with a tricky combination of prior ignore and copy records is now handled better. #748166 (Job #70041) ** Resolve will no longer give a false "already opened" error when resolving an edited depot file against a moved depot file. #744138 (Job #69946) ** Integrate will now consider all reverse integration records between the source and target when trying to determine whether the files share a close enough connection that scanning for renamed variants is not necessary. #739254 (Job #69832) ** Integrate will no longer attempt to remap the source to earlier (later readded) variants of the target file that have more direct connections with it than the current head revision. #736559 (Job #69654) ** Resolving an open file that has been moved at the head depot rev will no longer produce a false "not in client view" error when a filename argument is given to the resolve command. #735760 (Job #69656) ** When integrating moved files, the search for earlier filename variants will stop if the earlier variant is not mapped in the current branch/stream view provided that a target file matching a later filename has already been found. #735695 (Job #69698) ** Files that have been re-added in the source branch will no longer be remapped into moved counterparts in the target branch when there is no connecting history with the re-added variant. #732377 (Job #45535) ** Certain 'p4 integrate', 'p4 interchanges', and 'p4 copy' commands would incorrectly display the message "Database scan error on db.integed!" if the command was terminated due to MaxResults, MaxScanRows, or MaxLockTime. Bugs fixed in 2013.2 PATCH1 #723755 (Job #69429) ** Journal replay into the new server type 'edge-server' was acquiring unnecessary locks when propagating a submit from a commit server. #723545 (Job #69286, #69288) ** An update command submitted via a forwarding replica which is interrupted while it is waiting for replication processing to complete will no longer cause unnecessary system resource usage in the forwarding replica. #721940 (Job #69315) ** A failure from a change-commit trigger during a submit from an edge server could cause the edge server submit to leave the submitted change status as pending on the edge server. This has been fixed. #721669 (Job #65583) ** Change #589668 (charset detection) introduced a regression by setting a charset before acknowledging whether the server was unicode or not. This problem could happen against a unicode enabled server and if P4CHARSET was not set. The following is an example of the kind of error observed: p4 add //depot/path/????txt#1 - opened for add No Translation for parameter 'path' value... The (charset detection) feature has been disabled until this problem can be resolved. Bugs fixed in 2013.2 #708462 (Job #68808) ** Changing the spec.hashbuckets configurable no longer causes all existing autoreload labels to be empty. #705600 (Job #66770) ** A replica which used the ClientDataFilter or RevisionDataFilter options would stop replicating after the completion of a large 'p4 sync' command on the master server. #700621 (Job #68446) ** 'p4 unshelve -b' could previously carry resolve records from older revisions on the originating branch over to the destination branch, which in turn would create permanent integration history on submit. These records are now discarded during the unshelve. #700115 (Job #68342) ** 'p4 unshelve' was not permitting an ignored branch to be unshelved on top of a previously deleted depot file. This has been fixed. #698342 (Job #66972) ** 'p4 interchanges' on a virtual stream no longer requires the force (-F) flag to ignore the stream's expected flow. #696998 (Job #67954) ** 'p4 archive' will now refuse to archive a revision which is used as the source of a pending or shelved integration. #694657 (Job #68200) ** A rare case where 'p4 merge' could loop indefinitely when trying to track a renamed target file has been fixed. #693514 (Job #67698) ** Integrating and resolving a moved file would sometimes suggest ignoring the move when it had been copied over by another file. This has been corrected. #693503 (Job #67951) ** A rare case where ignore credit could be lost in the process of overwriting a change via copy has been corrected. #693346 (Job #68018) ** Change numbers recorded in the db.template index are based on the previous change committed +1. To reduce the chance of missing pending changes at time a stream spec is modified, the template index will now reflect the greater value between 'commmitted change +1' and 'change counter'. #691799 (Job #67611) * ** Reconcile mangled paths when called from a root directory (ie. '/' or 'C:\') This has been fixed. #869231 (Job #66849) ** Police maximum date range for SSL Certificate creation so that the date does not exceed the precision of the underlying int. Issue error indicating maximum number of days that can be specified. #688624, 690969 (Job #67981, 68100) ** A file that was overwritten by a copy and then moved was previously not joined with its parent/child file when merged back. This has been fixed. #688064 (Job #67680) ** 'p4 user' will not fail when noautocreate is set to 1 and the security level of the server is > 0 due to the password not being set. #686560 (Job #66854) ** The server consistency checker 'p4d -xx' would report depot inconsistencies during the 'db.integed vs db.rev' check should a file within a task stream be integrated to a target within the same task stream. This has been fixed. #682378 (Job #66785) ** The error message raised when a server connects to a remote depot server via an SSL connection and the trust check fails has changed to ServiceNoTrust which requires an administrator to correct the trust problem. The previous error messages wrongly implied that the end client user could correct the problem. #680865 (Job #67203) ** P4TRUST value was not honored for Windows Service settings ie. p4 set -S Fixed. Also can be set via p4 configure. #671142 (Job #53464) ** The network-related performance of a 'p4 sync -f', 'p4 sync -p', or 'p4 print' command issued via a proxy over a long-haul network is improved by performing fewer network duplex flush operations. The new behavior, if problematic, may be disabled using the undocumented tunable 'rpc.deliver.duplex=1'. #670223 (Job #52464,#54911,#66981) ** The server no longer allows a Build Farm workspace to be edited on the master server. Build Farm workspace definitions should be created and edited by issuing the 'p4 client' command directly to the Build Farm replica, not to the master server. It is still possible to delete a Build Farm workspace directly from the master server, but this requires the -f flag to be passed on the 'p4 client -d' command by an administrator; it is preferable to delete Build Farm workspaces by issuing the 'p4 client -d' command directly to the Build Farm replica. #668938 (Job #34426,#65796) ** Accessing a file of type +X could cause the server to crash. #668764 (Job #67156) ** A Build Farm replica now refuses the 'client -d' command if it specifies a workspace not bound to that Build Farm replica. #666659 (Job #67081,#67375) ** A 'p4 sync' command issued via a forwarding replica which accesses a file that is not in the replica's cache and for which the replica fails to retrieve the file from the master server would incorrectly be recorded as sync'd in the client's have list. This also caused incorrect file delivery when the forwarding replica was accessed via a proxy. #661948 (Job #66666) ** On Windows if the Server log file is made busy by another application, an error is placed in the Windows Application Event log. #658282 (Job #66768) ** 'p4 annotate -i' will no longer attempt to follow history from remote depots. #656862 ** 'p4 copy' could fail to propagate a change in filetype or attribute when the target revision was already recorded as a direct copy of the source. This has been fixed. #652978 (Job #66630) ** It is no longer necessary to restart a Unix server following a 'p4 configure unset' of a configurable value. #652052 (Job #66384) ** A Windows replica server will now dynamically recognize when a 'p4 configure unset' command is replicated. #651403 (Job #66597) ** 'p4 interchanges' with a revision range could produce different results from the equivalent 'p4 integrate' command in some cases. This has been fixed. #651019 (Job #65773) ** If the client is terminated or the network is disrupted during the execution of a 'p4 sync' command, the server now notices the disruption more quickly and cleans up its own state (including the client workspace lock) more rapidly, thus avoiding situations in which the client workspace lock remained held by a 'p4 sync' that was no longer actively connected to its client. #649135 (Job #66256) ** Labels using the 'autoreload' option were being incorrectly updated by a 'labelsync' command which specified filespec argument(s) but did not specify the -a or -d flags. Files present in the label which did not match the filespec argument were lost from the label. #648350 (Job #66349) ** Certain server-to-server network messages (e.g., 'rmt-Journal') specify the workspace name as a string of length zero. The server log, monitor table, audit log, and structured server logs will now log these network messages with a workspace name of: "unknown". #648013 (Job #66251) ** 'p4 diff #head' will now correctly pair up files that are open for move. #644053 (Job #66309) ** 'p4 unload' will now refuse to unload a client which has one or more files of type +l opened. Such files must be explicitly reverted prior to unloading the client. #643157 (Job #63668) ** 'p4 integrate' now has more sophisticated logic in place to select a target from among multiple renamed variants of a file that all share common history with the source. #641784 (Job #66176) ** When 'p4 verify -t' on a replica server reported a BAD! file and scheduled the file to be re-transferred from the master server, the re-transfer request was quietly ignored by the 'pull -u' thread. #638593 (Job #66011) ** 'p4 shelve' will no longer fail with a 'missing from rev table' error when shelving a file that is open for branch and has a scheduled resolve from a remote depot. #638364 (Job #66081) ** Replica servers now treat 'logger -c N -t X' as an update command, instead of executing it locally on the replica server. #635226 (Job #65955) ** Replica servers now treat 'obliterate' as a read-only command if it does not specify the '-y' flag, thus executing the read-only obliterate command on the replica. #634123 (Job #65912) ** 'p4 integrate' will now recognize when a previously deleted change has been explicitly reinstated in the source, and permit it to override a deletion in the target when that is the case. #630677 (Job #65579) ** 'p4 submit -e' is now supported for use with task streams. #621164 (Job #65121, #65124) ** Fixed a memory leak in 'p4 attribute' in replica servers. #619878 (Job #64650) ** The server no longer maintains the 'last access time' for service users. #617921 (Job #64944) ** Trying to connect a replica to a server which has journaling disabled now results in an error message, not a server crash. #616323 (Job #61797) ** 'p4 diff2 -q' would sometimes not give the "no differing files" message when all files were identical. Fixed. #614102 (Job #64703) ** Partial information about an unloaded task stream can now be displayed using the command 'p4 -ztag stream -o '. #614086 (Job #64744) ** On a replica server, 'p4 verify -t' now allows the '-z' option. #613774 (Job #64781) ** The server now refuses to allow a client's ServerID field to be set to a non-existent server identifier. #608529 (Job #60612) ** 'p4 fstat -mN -Ru' now correctly limits the results based on the number of unresolved files, not the number of open files. #607046 (Job #64413) ** 'p4 property' now detects out-of-range values for the -s flag. #605852 (Job #64354) ** The replica server's journal pull thread was keeping the rdb.lbr file open even when it wasn't actively using it. #603339 (Job #64177) ** 'p4 fstat' was omitting the otherOpen tags for a deleted revision. #598622 (Job #63963) ** 'p4 resolve -at' of a file opened for edit will no longer produce 'corrupted during transfer' errors when keyword expansion differs between the depot and client files. #598401 (Job #63986) ** When an autoreload label is deleted, its server.locks lock file is now deleted as well. #598303 (Job #63987) ** A memory leak in replica on-demand file transfer is fixed. #596612 (Job #63873) ** 'p4d -jd /dev/null' was issuing a confusing message about being unable to write to /dev/null.md5. #591150 (Job #63488) ** It is no longer possible to submit a move/add revision without a corresponding 'moved from' integration record. #587922 (Job #52464, #56428) ** When a client workspace is created on a Build Farm replica, the client name is also now created on the central server, resolving a race condition in which a client by that same name might be simultaneously created on another Build Farm server, or on the central server itself. #587664 (Job #60715) ** A replica configuration which accidentally specifies multiple metadata pull threads no longer causes multiple threads to run. The extra metadata pull threads now block on a lock and are idle. #585006 (Job #62994) ** The 'submit -e' command now deletes the shelf database records using a single database transaction. #577771 (Job #62637) ** The 'p4 merge' command was not correctly checking that move operations were propagated atomically (per change 465399). This has been fixed. -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r13.1/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Major new functionality in 2013.1 #555450 (Job #59844) ** This release provides support for lightweight short-lived branches when using Perforce streams. This new type of branch is utilized by creating a stream of type 'task'. This special type of stream behaves similarly to a 'development' stream except that branched data is not stored in the regular repository tables. Submitting revisions that are not simple branches will promote file data to regular (visible) database tables, otherwise most meta-data for the 'task' stream will remain private. Task streams come with some caveats, they cannot be re-parented, they cannot have child streams and private data (un-promoted) is not visible except to clients of the task. When a 'task' stream is completed it should be either deleted or unloaded, this keeps task meta-data to a minimum and reduces checkpoint time. #521779 (Job #11379) * ** *** IPv6 network connections are now fully supported (in addition to the existing IPv4 support). An IPv4 or an IPv6 address may be used wherever an address literal is allowed, and hostnames may now resolve to an IPv6 address. Servers can now listen on either an IPv4 address or on an IPv6 address, and by listening on the IPv6 wildcard address ([::]) they can accept both IPv6 and IPv4 connections (if the host OS supports it). P4PORT strings can require either IPv4 or IPv6, or allow both (in which case they can specify a preference). See 'p4 help networkaddress' for additional details on syntax. In particular, IPv6 addresses may be used in the host field of the protects table. IPv4 addresses in the host field will also apply to the corresponding IPv4-mapped IPv6 address, and vice-versa. For backwards compatibility, IPv6 is disabled unless explicitly requested or allowed, via either P4PORT or the net.rfc3484 tunable. When IPv6 is allowed, addresses that are reported (in log files, messages, etc) will be IPv6 addresses for IPv6 connections. Customer scripts that parse such strings should be enhanced to support IPv6 address strings. #539809 (Job #53058) ** Shelved changes containing files that do not require resolve may be submitted directly without unshelving first via 'p4 submit -e '. See 'p4 help submit' for details and restrictions. #538913 (Job #36686) ** Shelved changes may now be unshelved into different branches or related streams via 'p4 unshelve -b' and 'p4 unshelve -S'. See 'p4 help unshelve'. Minor new functionality in 2013.1 #573464 (Job #62517) ** At times the stream view generator is changed causing different client or branch views to be generated. The existing method to force a new client view to be generated is by editing the stream view, or parent fields. Now 'p4d -xf 57689' can be used to cause all existing stream-client views to be marked stale, forcing new client views to be generated on next stream-client usage. #571383 (Job #62343) ** 'p4 unlock -s ' will unlock files left locked by an aborted 'p4 submit -e' command. #557509 (Job #61754) ** The '-T' argument to 'p4 export' and 'p4 pull' now allows the table name list to be separated by either commas or spaces. #555572 (Job #61641) ** 'p4 counters' and 'p4 keys' now support the '-m max' option to limit the output to the first 'max' counters/keys. #549890 (Job #15834) ** A trigger may now specify the variables %peerip% and/or %peerhost% when it needs to distinguish between the ip/host that originated the command and the ip/host of the proxy, broker, or replica which conveyed that command to the server. #549743 (Job #51831) ** 'p4 pull -l -j' now includes information about the replica's current time and time zone. #549223 (Job #53334) ** *** Added an additional field "SV" to the credentials config file that allows the user to overwrite the "Starting Valid" date for the certificate. This value is interpreted as an offset of days from the default value of "now" and it can be positive or negative. The documentation for this new field is as follows: SV: number of days from now for starting date of validity Note that value can be positive or negative. Also note that the units value DOES NOT pertain to this field, it is always in "days". (default: 0, e.g. starting validity is now) SV = #549167 (Job #60033,#60461) ** A delay has been added when failing to login after a configurable number of attempts. The delay increases up to a maximum of 10 seconds (controlled by configurable dm.user.loginattempts), the default attempts maximum is 3. #549153 (Job #53542) ** *** Files in P4SSLDIR can now have user read-only permissions. Prior to this release, files had to be user read-write permission. In addition the P4SSLDIR can now be user read-execute permission. #546277 (Job #61243) ** 'p4 change -U ' changes the owner of an empty pending change. #542934 ** 'p4 copy' will now produce a "no such file(s)" error when the source path is completely empty, rather than opening all target files for delete. #529441 (Job #59601) ** 'p4 opened -a file ...' can now be used with a new flag '-s' to improve performance with large repositories that have many clients. Using '-s' (short) output reduces the information returned but enables quicker processing. #540894 (Job #41825) ** A replica server can now filter revision data and/or active client data when journal records are retrieved from the target server. For more information, see 'p4 help server' and 'p4 help pull'. #538414 (Job #17818) ** When 'security' is set to a non-zero value, setting the new configurable 'dm.password.minlength' (default 8) will require that a password has at least that many characters. #536043 (Job #55700) ** A replica server may specify 'lbr.replication=ondemand' to indicate that file content transfers should not be scheduled. #535812 (Job #45046) ** The replica server now supports the 'p4 pull -d' command to cancel an unwanted file content transfer. #530488 (Job #44943) ** The stream spec now allows a 'group' as the stream owner instead of a user. When a stream is owned by a group, any user within that group or subgroup can update a locked stream or submit to the stream when the 'ownersubmit' option is set. #527471 (Job #53537) ** Invocations of 'p4d -Gc' and 'p4d -Gf' are now logged as event records in structured server logs. #527364 ** Server performance tracking now includes information about triggers which take an unexpectedly long time to execute. #519545 (Job #33242,#49675) ** Setting the configurable 'server.maxcommands' to a non-zero value will cause the server to refuse to accept more than that many simultaneous command requests. We encourage you to set 'server.maxcommands' to a value which is low enough to detect a runaway script or denial of service attack before your server hardware resources (swap file, process/network limits, etc.) are exhausted, yet high enough to maintain a substantial cushion between your server's typical average number of connections and the max value, in order to accommodate normal bursts of activity. If P4LOG is defined, the server log will contain lines of the form 'Server is now using N active threads'. which will help you assess your current level of activity; consider setting 'server.maxcommands' to a value which is larger than your current normal activity level, but small enough to protect the server from extreme request loads. Note: on AIX platforms, the server.maxcommands feature requires that monitoring be enabled. #519339 (Job #59013) ** Configuring a replica of a replica is now possible. Note that this is an advanced scenario and you should first become comfortable with simple replication scenarios. Certain configurations are not useful (e.g., configuring a forwarding replica of a read-only replica is pointless); please contact Perforce technical support for guidance if you are considering a multi-level replica installation. #508420 (Job #59515) ** The new command 'p4 property' can be used by administrators to view and update property definitions stored on the server. The server does not use property definitions itself; it provides this capability for client software that finds it useful. #505844 (Job #61399) ** 'p4 sync' now accepts a '-N' flag to display a summary of the estimated size of the sync command, without actually executing it. In addition, for servers with structured server logging enabled, 'p4 sync' commands now log size estimation information in new log record type 14. #503533,503656 (Job #1231, #7727) ** * The p4 command now supports a global '-q' flag. When set, this flag suppresses all informational messages; only warnings and errors are displayed. A new flag '-q' has been added to 'p4 integrate', 'p4 copy', and 'p4 merge'; when set, it suppresses normal output about the list of files being integrated, copied, or merged. #503080 (Job #1344, #54775) ** The new configurable 'run.users.authorize' can be set to 1 to cause the server to require authentication and authorization for the 'p4 users' command. Bugs fixed in 2013.1 #1213529 (Job #79647) ** p4d -jr would mis-handle the revStatus field if replaying db.rev journal records written by a 2005.2 or older server. #749425 (Job #69604) ** 'p4 istat' in a merge direction did not indicate all outstanding changes reported by 'p4 merge'. Regardless if the the content in the target stream was correct, 'p4 istat' did not report identical change information reported by 'p4 merge'. #723545 (Job #69286, #69288) ** An update command submitted via a forwarding replica which is interrupted while it is waiting for replication processing to complete will no longer cause unnecessary system resource usage in the forwarding replica. #708462 (Job #68808) ** Changing the spec.hashbuckets configurable no longer causes all existing autoreload labels to be empty. #705600 (Job #66770) ** A replica which used the ClientDataFilter or RevisionDataFilter options would stop replicating after the completion of a large 'p4 sync' command on the master server. #696998 (Job #67954) ** 'p4 archive' will now refuse to archive a revision which is used as the source of a pending or shelved integration. Bugs fixed in 2013.1 PATCH3 #677117 (Job #67554) ** After upgrading a user could experience a 10 second delay logging in for the first time. #675716 (Job #66603) ** On Server shutdown, client commands which do not terminate in time will no longer cause a Windows Service stop error. #673894 (Job #67259, #67285) ** Old stream path entries recorded in db.template are not always deleted from the stream when the stream is saved. This regression was caused by change #655696 and has been fixed. This change also uses the last committed change number, rather than the current change number for template indexing. #672185 (Job #67318) ** Using 'p4 reviews' with many file arguments (>1000) can lock out the db.user and db.review tables for long periods. #664350 (Job #66853) ** The server consistency checker 'p4d -xx' would report missing depot entries during the 'db.rev vs db.have' check should an unpromoted task stream be populated and sync'd to a client. If one or more of the files in that sync'd client also be open for edit, there would be errors reported during the check of tables 'db.working vs db.rev'. This has been fixed. #659745 (Job #66721) ** 'p4 copy' could fail to propagate a change in filetype or attribute when the target revision was already recorded as a direct copy of the source. This has been fixed. Bugs fixed in 2013.1 PATCH2 #655696 (Job #66132) ** When switching a stream-client between versioned (ie. StreamAtChange) and default, the new client was not always referencing the whole map. This was cause of 'sync' and 'have' commands with no parameters to not always reflect the correct haveMap entries. This has been fixed. #655694 (Job #66266) ** Change numbers recorded in the db.template stream table reflect the previous change submitted, rather than the next change to be submitted. This has been deemed to reflect incorrect results when using the StreamAtChange field of a stream client. This fix requires an additional administrative run of a bugfix to correct existing rows. With the system quiet, and this new P4D in place, run the command 'p4d -xf 66266', which will update all previously existing records in the db.template with change-counter + 1. This bugfix should be run only one time. When the installation is brought back up, subsequent stream specification modifications will correctly store the new change-counter + 1 to the db.template. #653833 (Job #66666) ** On Windows if the Server log file is made busy by another application, an error is placed in the Windows Application Event log. #651019 (Job #65773) ** If the client is terminated or the network is disrupted during the execution of a 'p4 sync' command, the server now notices the disruption more quickly and cleans up its own state (including the client workspace lock) more rapidly, thus avoiding situations in which the client workspace lock remained held by a 'p4 sync' that was no longer actively connected to its client. #647594 (Job #65830) ** Its possible under certain race conditions or sequence of commands to circumvent the (+l) exclusive locked file type. #630820 (Job #65680) ** Integrations into task streams will now correctly handle files that have been moved in the parent stream. #630442 (Job #65539) * ** The diff option '-dl' (ignore line endings) will correctly match the last line of a file with no line ending. Bugs fixed in 2013.1 PATCH1 #628176 (Job #65599, #65611, #65612) ** Using the 'revertunchanged' flag when submitting to a task stream could result in the error: Operation 'user-submit' failed. //filepath/file is missing from the rev table! Further problems may also happen to files that were partially submitted when this error occurs. To clear the error this task stream should be deleted. #625965 (Job #60612) ** 'p4 fstat -mN -Ru' now correctly limits the results based on the number of unresolved files, not the number of open files. #625432 (Job #65155) ** In some cases unpromoted task stream files were not being seen by certain commands. This problem could also manifest itself by causing an unnecessary sync replace operation when switching between stream clients. The commands affected are sync, diff, edit, reconcile, fstat, files, filelog, annotate and delete. #624649 (Job #65272) ** 'p4 copy -b branch @label' did not work correctly if the label did not include the target files. This has been fixed. Bugs fixed in 2013.1 (GA) #606657 (Job #60500) * 'p4 reconcile -a' generated translation errors with clients using a non-utf8 P4CHARSET setting against a unicode server. This has been fixed. #603329 (Job #64013) ** 'p4 revert' of unmatched move/delete files could in rare cases produce librarian errors or a crash. This has been fixed. #598303 (Job #63987) ** A memory leak in replica on-demand file transfer is fixed. #598155 (Job #63967) ** Updating the label spec for an autoreload label was incorrectly clearing the existing label contents. #597848 (Job #63333) ** On an outer server configured to use another server as its P4AUTH server, if a command requiring remote authentication is issued with a client of a Stream, the P4AUTH server would fail to authenticate with an incorrect error message. #596664 (Job #63713) ** *** Broker and proxy fail client authentication when net.mimcheck=5 and IPv6 literal addresses are used. #596288 (Job #63533) ** 'p4 reconcile -a' could generate 'Database get' errors trying to add files that are already opened when the client uses overlay mappings, or has changed the client map without syncing. This has been fixed. #595808 (Job #63812) ** On a unicode-enabled server configured to use another unicode server as its P4AUTH server, 'p4 review' was failing. #590013 (Job #62918) ** 'p4 annotate -iI' will now produce a usage error rather than silently ignoring the '-i'. #589943 (Job #63121, #63191) ** 'p4 integrate' will no longer consider contiguous ranges of directly credited source revisions for integration. Previously it was possible for revisions that were integrated with "-f" to be re-integrated due to the resulting history not clearly indicating which changes were applied by the merge. #588844 (Job #63236) ** 'p4 integrate' of a file that has been repeatedly deleted and re-added will no longer produce a conflict when the file has been deleted in the target branch. #584476 (Job #62805) ** 'p4 submit' will fail with an appropriate error if the change being submitted has shelved files due to a concurrent 'p4 shelve' command. #583869 (Job #62823) ** Using a client or label as a template now updates its access time. #583451 (Job #62790) ** 'p4 interchanges' will no longer report changelists associated with revisions that have been made irrelevant by a 'copy' operation. #582893 (Job #62837) ** Edits made prior to a user-specified integration range are now considered to be ignored for purposes of deciding how important it is to include them in the merge base versus already-integrated edits. #582216 (Job #62819) ** Previous edits made to deleted files that have been ignored are now considered ignored by future integrations. #581888 (Job #62138) ** Files with sizes greater than 2^31 bytes had their file size incorrectly displayed by 'p4 pull -l' and 'p4 pull -l -s'. #581498 (Job #62787) ** 'p4 integrate' will now schedule move resolves correctly for files that were previously opened for integrate. #581376 (Job #62579) ** 'p4 reconcile -a' and 'p4 status' would try to open or report a file already opened for add if the file had been deleted at the head revision. This has been fixed. #580235 (Job #62734) ** A corrupted RCS archive which was missing the deltatext for the head revision could cause the server to crash. #580188 (Job #42670) ** Running concurrent 'p4 shelve' commands to both update and delete the same shelved change could cause unexpected loss of shelved data. This has been fixed. #580136 (Job #62686,#62922) * Fixed 'p4 delete symbolic-link-to-directory', which was broken by change 492002. #579718 (Job #62604) ** The command 'p4 diff @=' would return incorrect results for branched files. #579138 (Job #62606) ** Fixed 'p4d -jd' crash on a read-only database due to change 508345. #575512 (Job #62061) ** Change #397964 introduced a regression allowing streams of type 'mainline' be saved with another stream as Parent. This has been fixed. #569569 (Job #62171) ** 'p4 -u user' will now fail to create a new user if there is an error in the user spec when the 'noautocreate' configurable is set. Previously the new user would be created anyway. #569270 (Job #57689) ** Stream view generation has used an algorithm that has placed significance in a single dot in view mappings. The result is inconsistent client or branch views, based on the complexity and lineage of the stream. This algorithm, by default, will no longer place such emphasis on single dots in view mappings. #569052 (Job #57370) ** Leading wild-cards of Stream path definitions are not always flagged as errors when the stream is saved. Job fix #484326 was not stringent enough for certain surreptitious mappings, which this change corrects. #568019 (Job #62081) ** 'p4 integrate' could report ignored revisions as still requiring integration when ignores had been combined with a copy into the same revision. Fixed. #566564 (Job #57798) ** Stream views have been reordering Remapped paths causing certain views to be generated incorrectly. This has been corrected but for the new correct views to be generated, the streams will need to be updated and saved. #561180 (Job #52246) ** 'p4 unshelve' to open a file for add will schedule a baseless merge and open the file for edit if the file already exists in the depot. #559674 (Job #61920) ** Two or more submits running concurrently could lock-step each other in a way that would delay the call to get the wallclock time for the submit, this could result in changelist/time ordering anomaly. #558151 (Job #61809) ** Specifying an unloaded client or label as a template using the -t flag to 'p4 client' or 'p4 label' now issues an error message. #555164 (Job #61646) ** 'p4 verify -q //pattern...' now prints an appropriate message if there are no such files matching the pattern. #554167 (Job #61573) ** 'p4 submit -c' could succeed even if the change had shelved files if the files in the change had been previously locked. This has been fixed so that the submit will fail as expected. #553462 (Job #51589) ** shelve-delete triggers would not fire unless there were files opened at that change in a workspace. This has been fixed. #553344 (Job #58397) ** 'p4 sync -q' was failing to report non-existent files. #549497 (Job #53669) ** A stream depot can be deleted while stream specifications still point to the depot. The deletion of the depot now checks for streams first. #548995 (Job #57794,#41323,#42956) ** A workspace with a name which contains a backslash (\) character no longer creates an invalid spec depot entry on a Windows server. #548246 (Job #61303) ** The message 'Forwarder set trusted client address' no longer appears in P4LOG unless the server trace level is set to 4 or more. #547623 (Job #61235) * 'p4 reconcile' no longer crashes on Windows8 X64. #547586 (Job #61280) ** Password expiration problems on a replica server which specifies lbr.replication=none are resolved. #545955 (Job #59572) ** Server restart command on Windows now allows client commands to stop before initiating the restart operation. #545904,#569710 (Job #22844,#60304) ** The server now refuses attempts to create a user name with an embedded NUL byte inside the name. #542396 (Job #58064) ** Audit records written to structured server logs for file contents transfered from server-to-server for remote depots and replicas (f_action="import") now contain accurate revision identifiers. #540594 (Job #53165,#60056) ** *** A Windows virus scanner will no longer block access to the logfile and cause multiple concurrent threads to hang. #539320 (Job #49295) ** Restricted changelist descriptions will no longer be visible if all the files associated with that change have been obliterated. #538652 (Job #60705) ** 'p4 unload' command can report misleading success message even when the command fails. This has been fixed. #535454 (Job #60483) ** The 'p4 admin resetpassword' command may not be issued against a replica server. #532397 (Job #58303) ** 'p4 describe' no longer issues the fatal error message: 'Change NNNNN description missing!' if a simultaneous 'p4 change -d' command deletes the change while it is being described. #532068 (Job #58474) ** Some commands which reacquire locks e.g. 'p4 changes -l' were not cacheing effectively. Some disk read I/O's were also missing from track information. Fixed. #531369 (Job #58857) ** Interrupting a checkpoint 'p4d -jc' or journal rotation 'p4d -jr' could leave the counters table in a corrupt state. Fixed. #528848 (Job #48725) ** 'p4 diskspace' now includes spec depots, archive depots, and unload depots in its report. #528378 (Job #49612) ** The '-s' flag to 'p4d' is only valid when '-jr' or '-jrc' is also specified. #528207 (Job #48719,#57850) ** A change-content trigger that queried the server for information about a file moved by 'p4 move' could get incorrect results. #527665 (Job #53520) ** 'p4 logschema' now includes a human-readable name for the log record type. #527589 (Job #52729) ** 'p4 logappend' now issues a warning if no logs have been configured to record user log events. #503100,526227 (Job #59284,#59285) ** The 'p4 submit' command can now detect certain specific types of damage to the db.revhx index, and will prevent further damage. #521622 (Job #55320) * ** *** The server and proxy no longer support the Zeroconf server registration protocol. The P4ZEROCONF environment variable is no longer implemented, and the 'p4 browse' command has been removed. #520723 (Job #21350,#36126) ** The 'p4d -jr' command now checks to see if a checkpoint is being replayed into an existing database directory by mistake. To bypass the check, and allow replaying a checkpoint over an existing database, specify 'p4d -jrF '. #520399 (Job #59310) ** When the same event is logged to multiple structured log files, the log record will now have the same high precision timestamp in each log file. #515167 (Job #59192,#51548) ** A memory leak in the client workspace lock feature is fixed. #514839 (Job #58872) ** The 'p4 client -o' and 'p4 label -o' commands will now display a placeholder line in the View: field for a client or label which has been unloaded with the 'p4 unload' command. #514334 (Job #59197) ** A 'p4 diff2' command issued against a replica server might have reported librarian errors if the files were of type ktext. #514181 (Job #59204) ** *** Low-level file locking errors on Windows are now reported. #513549 (Job #58934) ** A 'p4 verify' command which is run against a server which has a spec depot defined and which has millions of non-mappable damaged revision entries will no longer crash the server. #513373 (Job #59131) ** A shelve-commit trigger which updates the same client that is used to submit the shelf will no longer deadlock on the client lock. #513214 (Job #59085) ** 'p4 protects //pattern/...' will no longer crash if the protections table contains a single line with hundreds of wildcards. #512707 (Job #58967) ** 'p4 dbschema' now includes the db.monitor table in its output. #504133 (Job #7908) ** 'p4 verify' now reports bad and missing revisions as error messages, not info messages; the command-line exit code is also now set to a failed value if any such errors are reported. #503857 (Job #58257) * A user whose name contained a colon was unable to login. #491284 (Job #57110) * ** *** There are 4 new configurables to control network timeout of idle connections; all are initially set to 0: net.keepalive.disable - if non-zero, disable sending TCP keepalive packets net.keepalive.idle - idle time (in seconds) before starting to send keepalives net.keepalive.interval - interval (in seconds) between sending keepalive packets net.keepalive.count - Number of unacknowledged keepalives before failure If set, these configurables override the system-specified default values. -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r12.2/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Important update for integration engines 2012.2 ** Two integration engines are supported in the 2012.2 release. The new integration engine (v3) was introduced in the 2011.1 release and provides improved base selection semantics and expanded resolve capability. The default integration engine is still the (v2) engine which has been around since its first release in 2006. For new installations of Perforce, it is advisable to select the new integration engine as the default. Admins can set the global configuration parameter like so: 'p4 configure set dm.integ.engine=3' The simplified integrate command 'merge' always uses the new (v3) engine. By using streams for your branching strategy, you will automatically be using the new engine. We recommend that customers who upgrade should try this new engine by using the 'merge' command instead of 'integrate'. You can also use 'p4 integrate -3' flag to specify the new engine. After you have tested the new engine's behavior as it relates to your branch history, you can set the dm.integ.engine configurable to '3' to make the change apply to all users at your site. We anticipate that the (v3) engine will likely become the default in a 2013 release. For more details on enabling the new engine, and further information see the following link: http://kb.perforce.com/article/1631/generation-3-integration-engine Major new functionality in 2012.2 #408756 ** A new depot of type 'unload' can be configured so that old or infrequently used clients and labels can now be unloaded. Unloading removes database records from the live database tables and writes them to files in the unload depot. Routine use of the new 'p4 unload' and 'p4 reload' commands frees up space in the db.have and db.label tables for active clients and labels. Clients and labels can be reloaded as necessary. A label with the autoreload option set in its spec is always unloaded, and does not need to be explicitly reloaded prior to use. Note that unloaded labels and autoreload labels, like automatic labels, are always omitted from the results of 'p4 labels '. Minor new functionality in 2012.2 #485057 (Job #43361) ** 'p4d -xf 43361' can be used to create new db.have records from existing db.working records. #483800 (Job #57375, #53798) ** A new command 'p4 key' allows users with review permission to set, delete, and access key value pairs. These values can be viewed and searched with a complementary command 'p4 keys'. For more information see 'p4 help key/keys'. #479199 (Job #56618) ** On Windows, 'p4s -V' can be issued at the command line to view the version information of the p4s executable. #471920 (Job #16588, #15260) ** A new configurable, 'submit.unlocklocked', causes 'p4 submit' to unlock files from a failed submit. #469562 (Job #56270) ** 'p4 print' now accepts a '-k' flag to suppress keyword expansion. #462379 (Job #39317) ** New command 'p4 admin resetpassword' allows a super user to force user(s) with passwords to reset their passwords before issuing another command. In addition, a new configurable 'dm.user.resetpassword' allows forcing password resets for all newly created users with passwords. See 'p4 help admin' for more information. #460143 * 'p4 -I submit' displays a progress indicator as files are being sent to the server during a change submit. #452158 ** 'p4 fstat -Or' now displays all resolves associated with each open file, along with the type of resolve (content/branch/delete/etc), similar to "p4 resolved" and "p4 resolve -n". #451955 ** 'p4 integrate' and 'p4 merge' now accept a -O flag that enables more verbose output. '-Ob' causes the base to be displayed, and '-Or' causes each scheduled resolve to be displayed. The old '-o' flag on 'p4 integrate' continues to function as a synonym for '-Ob', but is considered deprecated. #448526 (Job #25974) ** Automatic labels can now be used as 'pure' aliases for a single revision specifier (e.g. @change) by clearing (leaving blank) the view specification. When used in this way labels will perform better and behave exactly as the revision specifier rather than computing a label on-the-fly. See 'p4 help label' for more information. #443861 (Job #14936) ** 'p4d -jj' and 'p4d -jc' can now run a user supplied command as part of their operation while the locks are held on the database. Example usage: 'p4d -c "snapshot /depot" -jj The command is run after the journal rotate and before locks are released. #438803 (Job #44867, #45119, #47718, #54043) ** 'p4 configure set defaultChangeType=restricted' can now be used to specify that new changelists should default to Type: restricted. #436459 (Job #53622) ** 'p4 list' now supports the '-M' flag, for use in forwarding replica scenarios. 'p4 list' by default is executed on the replica; if the '-M' flag is specified, 'p4 list' is forwarded to the master. #436300 (Job #53349) ** Audit logs on forwarding replicas now include user and client information when a 'p4 sync' command issued via the forwarding replica causes file content to be delivered by the replica. #389844 ** 'p4 lockstat' now accepts the flags '-c client' and '-C' to specify reporting on the client workspace locks added in 2011.1. #384638 *** ** * The net.maxwait configurable can be used to specify a hard limit (in seconds) on the maximum time that a connection will wait for any single network send or receive to complete. The 'p4 sync' command now supports a '-r' global flag to specify that the sync command should be retried if a network error occurs. Bugs fixed in 2012.2 #752957 (Job #70168) ** A performance problem in 'p4 archive' introduced by change 696998 is addressed. The performance of 'p4 archive' now correctly depends on the number of revisions being archived, not on the total number of revisions examined by the 'p4 archive' command. #708462 (Job #68808) ** Changing the spec.hashbuckets configurable no longer causes all existing autoreload labels to be empty. #696998 (Job #67954) ** 'p4 archive' will now refuse to archive a revision which is used as the source of a pending or shelved integration. #608133 (Job #64478) ** Replica servers failed in certain specialized licensing scenarios. #606617 (Job #64384) ** Customers with large domain tables (million+ records) can experience performance problems if the data is continuously scanned for domain information. This change improves performance when querying with the name filter '-e|-E' and has support for a secondary index to allow fast access when using the '-u username' option. The index is created by using 'p4d -xf index.domain.owner'. #603329 (Job #64013) ** 'p4 revert' of unmatched move/delete files could in rare cases produce librarian errors or a crash. This has been fixed. #603012 (Job #62738) ** Concurrent 'p4 shelve -d -c ' or 'text+FS' will now cause the server to purge edit revisions of those spec depot files appropriately. #359100 (Job #15959, #24457, #31911, #36804) ** If the optional SpecMap field of the depot spec for a spec depot contains a mapping, only revisions that match that mapping will be stored in the spec depot. #354289 ** On a replica server, 'p4 pull -l' will now include information about each pending revision's change number, revision date, and last-modified-time. #353194 (Job #3512, #29036) ** Server trigger invocation lines may now use the new variables %clientprog% and %clientversion% to access the client's "prog" and "version" information, respectively. #353068 (Job #48562) ** The 'p4 obliterate' command now ignores archived files by default; to instruct the command to process archived files you must pass the -A flag. #353068 (Job #48598) ** The 'p4 print' command now accepts the -A flag, to print a file in an archive depot. #351058 ** The new table db.view.rp stores view mapping lines for clients bound to a single server. #350377 (Job #44455) ** If the '-e' flag to 'p4 clients', 'p4 branches', or 'p4 labels' specifies a literal string with no wildcards, the server will now use the index in the search and avoid scanning db.domain. #345318 ** Running 'p4 sync' with no file pattern on a client with no opened files will now automatically remove un-needed havemap entries from the client's view. #340478 ** 'p4 dbverify' and 'p4d -xv' will now specifically report problems with overflow data items, these are metadata records which are too large to fit on a single database page. Also, spelling corrections to these reports and a new note that some problems are only warnings. #340413 (Job #47282) ** Replica server re-configurations which affect background pull thread behaviors no longer require a server restart to take effect. #338798 (Job #46363) ** The 'p4 verify' command on a replica server will no longer attempt to transfer missing or damaged files from the master server itself. #336044 ** The 'p4 pull' command now supports the '-T' and '-F' flags. These flags have the same syntax and meaning as they do for 'p4 export'. #329784 (Job #26031, #42006) ** The new command 'p4 dbverify' can be run by a super user or operator to perform low-level verification checks on the database tables. This is the same level of checking as is performed by the 'p4d -xv' command, which is now documented. #321637 (Job #23109) ** The command 'p4d -jd dump.file db.tablename' can now be used to checkpoint just a single named table into the named dump file. #321561 (Job #20259) ** 'p4d -xv' and 'p4d -xr' will now set the operating system exit code to a non-zero value if problems were found in one or more tables. A summary message with the count of the problem tables will also be printed in this case. #320029 (Job #40288) ** 'p4 groups -v -i ' now supports combining both '-v' and '-i' flags to display both indirect group membership and group resource limits in a single command. Bugs fixed in 2012.1 #547239 (Job #61205) ** Fixed a timing problem impacting forwarding replica reliability on Windows servers. #513635 (Job #58700) ** 'p4 integrate' could open files with an unset haveRev when the client mapping was complex. This has been fixed. #507528 (Job #58819) ** 'p4 interchanges' now defaults to the '-3' behavior when run with a stream argument, in order to more closely follow 'p4 integrate'. #505914 (Job #58769) ** 'p4 shelve' no longer fails with a 'missing from the rev table' error when shelving files that have been moved by 'p4 resolve'. #504825 (Job #58325) ** 'p4 counter -i monitor' no longer fails with a locking error on the db.config table. #502049 (Job #57862, #58199) ** 'p4 sync -f' could flag a file as 'corrupted during transfer' if the immediately preceding file was deleted from the client due to being not present in the label being sync'd, and if those two files had differing file types (e.g., one was binary, one ktext). #499273 (Job #58256) ** 'p4 filelog -i' will now correctly show branch history when a revision range is specified for the initial file. #368980,#498941 (Job #28397, #28753, #29835, #43984, #57961) ** 'p4 login' would issue tickets without client address restrictions if that command was submitted through a proxy, or a broker or if P4AUTH was in use, this has been fixed. 'p4 info' reported the proxy or broker address as the client address if one of those were in use. Now, 'p4 info' reports both a PeerAddress and a ClientAddress. The ClientAddress omits the port. The old 'p4 info' format is avaliable for api <= 70. #497791 (Job #58255) ** "p4 merge" will now correctly recognize moved source files when they have been deleted and re-added after being moved. #496304 (Job #58193) ** "p4 copy" and "p4 integrate -t" will now copy all attributes (including those not set to be propagating) when opening files for "branch". #486432 (Job #56773) ** On Server shutdown client commands are now prevented from running during the final stages of process termination. #486047 (Job #55422, #33649) ** Non fatal depot repository librarian errors are now reported in the Server logfile. #486009 (Job #57488) ** It was possible to output the generated branch view of a -S stream with a -P parent when the stream and parent were not of the same depot lineage. This is now disallowed. #484326 (Job #57370) ** Validation of a stream specification form failed to reject spec Path fields containing leading wildcards ( *, ... ) causing client and branch views to be incorrectly generated. Existing streams containing such leading wildcards in Path fields will invoke an error the next time they are attempted to be saved. Correct these errors by removing leading wildcards. #482580 (Job #56339) ** 'p4 copy' with both (-S) stream and (-s) fromFile could falsely report "CopyNeedsMergeFirst" error when no merge exists. This has been fixed. #482438 (Job #18060) ** 'p4 add' will now fail if the file is slated as exclusive open in the typemap, and the file is already opened by someone else. #481968 (Job #56430) ** 'p4 group -a' was returning an "illegal command usage" error on some platforms. This has been fixed. #479612 (Job #56607) ** 'p4d -xx' and 'p4d -xv' were mistakenly printing non-error messages to stderr. Those messages are now printed to stdout, and only actual errors are printed to stderr. #479503 (Job #54048) ** The 'archive' and 'restore' commands now copy compressed binary files between the local depot and the archive depot in their compressed format (i.e., without uncompressing, then recompressing). #478740 (Job #55738) ** 'p4 reconcile' ignored typemap entries. This has been fixed. #478690 (Job #56331) * On Windows, the p4 client would mistakenly attempt to create a directory when that directory already existed as a symbolic link created via 'mklink /d'. #472861 (Job #56416) ** Performance degradation from excessive scans of db.resolve with the 'p4 shelve' command has been fixed. #471479 (Job #56347,#56421) ** On Windows, 'p4d -jd' would skip tables larger than 4GB, and 'p4d -jc' would fail to truncate journals larger than 4GB. #471096 (Job #56243) ** Added 'p4 help legal' to include the full OpenSSL license text with appropriate acknowledgements. #467304 (Job #56226) ** Server now detects if broker closes connection as a result of client control-C. #462189 (Job #55748) ** Resolve records in 'p4 fstat' output will no longer have gaps in their numbering. #458325 (Job #44399) * Syncing an apple (resource filetype) file would fail with network transfer errors. This has been fixed. #454430 (Job #54729) ** Police that private key is of type RSA. Prevent loading of DSA private keys. #453549 (Job #55540) ** 'p4 counter -i' race condition removed. #445556 (Job #53950) ** If a stream and the stream parent have any identical 'Ignored' fields, there is a redundant exclude entry in the generated branch view. This has been fixed. #443907 (Job #54921) ** *** p4d, p4p, p4broker run as service on NT could not see P4SSLDIR value in registry. #440231 (Job #54176) ** If a form type had a form-save trigger defined, but did not have a form-in trigger defined, the form-save trigger was called with an empty formfile. #436410 (Job #53679) ** 'p4 integrate' could fail if the only depot for the source was a remote depot and a change range was specified. The error 'Relock failed in Position()' would be reported under this scenario. #436206 (Job #53742) ** A Super user logged in via a ticket trying to login another user through a proxy did not work. Fixed. Also applies to Auth server use. #435729 (Job #53366) ** 'p4 move' will now open files at the correct depot revision when the target of the move is an existing (deleted) file. Previously the file would be opened for move/add at revision #1, which could lead sync to schedule spurious resolves. #435626 (Job #53776) * 'p4 set P4WEBSERVICEFLAGS=' works again. #432300 (Job #53529) ** Files that have been opened with 'p4 copy -v' and then synced while open will now be transferred to the workspace when reverted. #431728 (Job #53461) ** Resolving a move could in rare circumstances result in the file being opened in a workspace location that it was formerly mapped to rather than the currently mapped location. (When this happened, a subsequent sync would correct the issue.) This has been fixed. #429428 (Job #51965) ** When replicating a server which was initially created prior to 2008.2, and has not yet been reloaded from a checkpoint to enable the database checksums feature, 'p4 journaldbchecksums' will no longer report 'table checksums DIFFER' in the replica log but will instead report 'table checksums unknown (master)'. #427158 (Job #53155) ** This change significantly improves performance of @label, when filespec contains no wildcards and is not from a remote depot. #426213 (Job #53180) ** 'p4 resolve' could fail with a "can't resolve: (shelved change was deleted) error if the file was shelved in multiple places and the file to be resolved was from an older shelved change. This has been fixed. #425360 (Job #47395) ** 'p4 shelve' could fail with a "missing rev" error if a file to be shelved has resolve records to its head revision and also to a shelved file revision. This has been fixed. #424140 (Job #53126) ** Attribute resolves now combine correctly with branch resolves. #423257 (Job #52484) ** 'p4 copy' no longer deletes target files in a parent stream when those files are entered in the Ignored: path of the donor stream. #422968 (Job #52995) ** 'p4 populate' will no longer permit target files to be overwritten when a revision specifier is provided on the second file argument. #421165 (Job #52959) ** Using the deprecated '-d' flag to 'p4 integrate' will now propagate move/delete revisions as plain deletes, rather than skipping them entirely. #419958 (Job #52820) ** The replica was incorrectly reporting a digest mismatch for a file which was retyped using 'p4 retype -t text+k'. #418980 ** The 'p4 istat' command is no longer allowed on a read-only replica. #417685 (Job #52442) * A client command may now pass up to 256 command-line flags. #414070 (Job #52521) ** A file that is moved back and forth between the same names in two codelines will now correctly propagate the most recent filename when integrated and resolved automatically. #412671 (Job #52372) ** Replica server 'p4 pull' commands now use the server disk space configurables and will check for sufficient disk space periodically. #412338 (Job #52231) ** Replica servers were incorrectly treating 'p4 counter -i' as a read-only command. #411861 (Job #51623) ** The 'p4 verify -z' command now automatically disables file batching, and it is no longer necessary to specify '-b 0' when running 'p4 verify -z' in order to get acceptable performance.. #410909 (Job #52181) ** When using 'p4 copy -S -P' or 'p4 merge -S -P' to copy or merge changes by reparenting on the fly, directional flow and copy/merge rules are no longer enforced. In the case of 'copy' however, a check for merged down changes is still performed. #408930 (Job #52147) ** Using 'p4 client -s -S' to switch a non-stream client into a stream client will now issue a warning about destroying the clients static view. #405701 (Job #52069) ** Files that have been opened for move from an old revision will now produce the correct base file (the origin of the move) when synced. #397922 (Job #51656) ** 'p4 monitor pause' no longer erases the application name, host address, and workspace name fields. #393714 (Job #51180) ** 'p4 users -m N ' could display fewer than N users matching the pattern, if some service users or operators also matched. #393526 (Job #51292) ** A Remapped stream path disallowed files starting with a single dot, interpreting the file to be starting with a wildcard. #393175 (Job #51183) ** It is once again possible to create, edit, and delete a client spec which contains a back-slash (\) character, when the server is on a Windows platform. #390961 (Job #17878) ** A job name beginning with a hyphen is now disallowed. #387667 (Job #50828) ** Reverting a file that has been synced after being opened by 'p4 delete -v' will now correctly sync the file to the workspace. #386216 * In some cases, a Windows client trying to delete a symbolic link to a directory could fail with the error message: "unlink: : Access is denied.". #384441 (Job #50644) * The '-d' flag, which specifies the current directory, is now in effect for the 'p4 set' and 'p4 tickets' commands. #379943 (Job #50375) ** A replica server with rpl.pull.position set might echo journal state information to the log excessively following a 'p4 monitor resume' command resuming the replica's pull thread. #379327 (Job #50311) ** 'p4 verify -t' will now schedule an archive transfer of a missing or damaged file which is a lazy copy. #369361 (Job #26775) ** 'p4 admin updatespecdepot -a' now includes protect, triggers, jobspec, and license forms in its list of form types to process. #367474 (Job #49092) ** It is once again possible to submit a file whose name contains a single double quotation mark character using 'p4 submit -d', although only if the server has neither a form-in trigger of type 'change' nor a form-save trigger of type 'change'. #366680 (Job #49557) ** 'p4 -ztag diff -sb' could report invalid data for the 'depotFile' and 'rev' tags for open branched files that had been modified. #366184 (Job #42854, #49383) ** The MD5 digest file which is created for a compressed checkpoint contains the digest of the uncompressed checkpoint data, so the filename has been changed to omit '.gz'. #361586 (Job #48744) ** Updating a shelf such that a previously-shelved edit is changed to a lazy copy of a different archived file will no longer result in a revision that the replica server is unable to transfer. #352567 (Job #47699) ** The '-h' flag on 'p4 login' is no longer restricted to super users. #349544 (Job #42492, #46051) ** A 'p4 retype' command which finds that no files need retyping will now issue a warning message describing that fact. #349470 (Job #43904) ** An invalid form type for the 'p4 admin updatespecdepot -s' command will now generate a message warning about the unknown type. #348775 (Job #48125) ** On a replica server, 'p4 license -i' will no longer update the spec depot entry for the license. #348308 (Job #48242) * When the assumed type of a newly-added missing file is modified by a partially-wild typemap spec, the message about the assumed file type now reflects the typemap information. #345397 (Job #48150) ** A 'p4 cstat' command which retrieves no records due to exceeding map.joinmax1 will now display an appropriate message. #341691 (Job #33799) ** A typemap entry which defines an invalid filetype for spec depot data is quietly ignored, and the spec depot files are stored in the default (text+C) type. #340854 (Job #34226) ** A 'p4 obliterate' command which obliterates both local-depot files and spec-depot files with a single filename pattern will no longer leave a single extra row in either db.revdx or db.revhx. #338261 (Job #47013) * A 'p4 sync' operation which fails due to P4CLIENTPATH will no longer issue the message: "Fatal client error; disconnecting!" #337986 (Job #47021) * ** Specifying an out-of-range port number now results in an error message, rather than interpreting the port number modulo 65536. #337170 (Job #21657) ** Attempting to open a spec depot file for edit or delete no longer produces the message "File isn't in revisions table!" #324724 (Job #46254) ** 'p4 fstat -F' filter expressions are now evaluated properly when the arguments are larger than 2^32-1. #321510 (Job #36807) ** The standard trigger variables (%client%, %user%, etc.) are now available to archive triggers. #321281 (Job #33612) ** Submitting a file of type +X via the proxy no longer crashes the proxy. #320613 (Job #16997, #18719, #29781, #32950) ** Triggers of type "fix-*", "form-*", and "auth-*" now validate their path value more thoroughly. #320243 (Job #14434) ** An improved error message is now issued for a 'p4 add' command of a file name containing the ellipsis wildcard (...) #320100 (Job #42051) ** Invalid regular expression patterns in a 'p4 fstat' command now issue a syntax error message instead of quietly failing to match. #319627 (Job #45848) ** Normal termination of a Unix server will now once again display a log message for each child connection that was running at the time of the shutdown. #318993 (Job #24639) ** 'p4 opened' now displays '*exclusive*' for opened files of type +l. -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r11.1/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Important changes to default integration behavior for 2011.1 ** #427338 ** (Job #53249) Two integration engines are supported with the 2011.1 server. The new integration engine (v3) includes improved base selection semantics and expanded resolve capability (see below). The GA release of 2011.1 moved to the v3 integration engine as its default engine across all commands (integrate, copy, merge). Given that the new engine will schedule new types of resolve and therefore can return unfamiliar results the default behavior has been changed. Starting with this patch, the server uses the v2 (2010.2) engine for 'p4 integrate'. The new commands 'p4 merge' and 'p4 copy' continue to use the new v3 engine. For more details on enabling the new engine, and further information see the following link: http://kb.perforce.com/article/1631/generation-3-integration-engine Major new functionality in 2011.1 #386481 ** The unlicensed (free) server version user/client limit (2/5) has been raised to 20/20. Unlimited users and workspaces for repositories with less than 1000 files has not changed. #268731 ** * This release provides support for streams. This functionality provides a way to create and maintain customized branches, known as streams, and regulate the flow of control of changes for clients using those streams. A stream spec is used to detail the relationship between a parent codeline and the branched files on the workspaces of clients using the stream. Besides using 'p4 integrate', 'p4 interchanges', 'p4 copy', and 'p4 merge' to handle integration of changes using streams, a few new commands have been implemented for streams support: istat - Check for integrations needed for a stream stream - Create or edit a stream specification streams - Display list of streams Additionally, 'p4 branch', 'p4 client', 'p4 clients', 'p4 diff2', and 'p4 dirs' have command options that relate to streams. To find out more about streams, see 'p4 help stream', or see help for any of the other supporting commands. #265906, #274187, #278007, #300647 (Job #36, #835, #2360, #4834, #21342, #21415, #22187, #22281, #24144, #25840, #29694, #34416, #37508, #39465 ) ** * With the v3 integrate engine enabled, 'p4 integrate' provides improved base selection semantics and expanded resolve functionality, including: 1) Files that have previously been "moved" within the source and/or target branch will be paired up if there was common integration history prior to the move. When the range of source changes to be merged includes "move" actions, a special resolve will be scheduled to accept, ignore, or merge the move action. 2) When files have been edited in one branch and deleted in another, a special resolve will be scheduled to accept or ignore the branch or delete action. (This replaces the old "can't branch/delete without -d flag" warning.) The -Rb and -Rd flags to "p4 integrate" will force all branch and delete actions to be resolved, permitting them to be ignored even when they are not in conflict. 3) When the range of source changes to be merged includes filetype changes, a special resolve will be scheduled to accept, ignore, or merge the filetype change. (This eliminates the need to use the -t flag to ensure that filetype changes are propagated.) 4) The new -Rs flag forces multiple resolves to be scheduled per source file when there is a non-contiguous set of unintegrated changes. This prevents previously "cherry- picked" changes from being re-integrated, at the cost of requiring additional merge steps during "p4 resolve". A new client is required to perform new (non-content) resolves interactively (with prompts), although old clients may still perform these resolves with "p4 resolve -a". The "p4 integrate" command will not schedule the new types of resolve if the client application indicates that it does not support them. Minor new functionality in 2011.1 #342289 ** 'p4 fstat' will now return a 'reresolvable' field if the file has been resolved and may be re-resolved with 'resolve -f'. #335746 * ** The auth-check-sso ( auth type trigger ) is now supported. This simple single sign-on trigger has been present but undocumented since 2007.2. Due to the requirement of the client-side script component, the trigger will only function with clients at or above release 2007.2. See 'p4 help triggers' for more information. #333847 (Job #39308, #46830) ** When a copy of a form is saved in the spec depot, the formname is stripped of any leading slashes ('/') prior to file creation. #332191 (Job #46870) ** The 'dbschema' command is now available to service users. #331093 (Job #46259) ** 'p4 shelve' now performs tamper checking on lazy-copied files, similar to 'p4 submit -t', by default. #323005 (Job #17757) ** 'p4 interchanges', which lists changes that have not been integrated from a set of source files to a set of target files, is now supported. The command has long been present but has been undocumented. #321120 (Job #32218) * 'p4 resolve' will now suggest 'ae' after an editor or merge tool has been invoked to produce a result identical to the 'yours' file. The resulting 'edit from' record will be a candidate for integration in the reverse direction. (The user may still enter 'ay' to produce an 'ignored'.) #319257 (Job #39693) ** 'p4 fstat -Or -e -Rs ' now shows pending integration records for shelved files. #314657 (Job #45291) ** Compress checkpoint but not journal files. A new flag '-Z' when used with 'p4 admin checkpoint' and 'p4d -jc' requests that the checkpoint be compressed but that the journal remain plain text. Note that the existing '-z' option compresses both the checkpoint and the journal; '-Z' is useful to allow a replica to read the uncompressed journal, while allowing the master to save disk space by compressing the checkpoint. See 'p4d -h' and 'p4 help admin' for details. #312885 (Job #43878) * ** MD5 routines are somewhat faster now for some platforms. #312551 (Job #44398, #44626, #40974, #42629 ) ** Replica servers now implement the 'p4 login' command locally, rather than forwarding it to the master server. Each user may separately log in and out of the replica server independently from their login to the master server. Replica-server-specific login information is tracked in the db.user.rp table. The new flags '-r' and '-c' to the 'p4 users' command can be used on a replica server to observe replica-specific or central-server login information, respectively. A 'p4 logout -a' or 'p4 passwd' command issued on the central server will also log the user out of the replica server, and deleting the user on the central server deletes them from the replica as well. #310768 (Job #1415, #2087, #16395, #37612) * P4CONFIG files now validate variable names more carefully. They also are more tolerant of line ending differences. 'p4 set' now reports the name of the actual P4CONFIG file that was used, and also includes any tunables that were set in the config file. #309049, #309070, #324902 (Job #43718) ** Create a new 'operator' user type. There are now three types of users: standard: a normal user (licensed) service: a service user (not licensed) operator: an operator user (not licensed) The purpose of an operator user is similar to that of a restricted admin; he or she can perform various administrative tasks: stop or restart the server monitor and confirm its correct and timely operation return a server to proper operation assure the safety and integrity of the data and metadata However, the operator user cannot access or modify any metadata or file contents. Operators are intended to be used to manage the operational aspects of a Perforce server (as opposed to an admin user, who can also change configuration, etc). We expect that large companies might separate functional roles by creating operators to run the day-to-day management of a Perforce server, admins to perform tasks that have access to metadata or file contents, and superusers to handle everything else. We expect that the main use of operator users will be to manage a replica; as these users will almost by definition not be co-located with the people responsible for a server, it is desirable that they can handle the day-to-day operation of a replica without being able to access or to modify metadata or confidential data. Like service users, operators are severely limited in what they can do. Operators can run only the following commands: p4 admin stop p4 admin restart p4 admin checkpoint p4 admin journal p4 dbstat p4 diskspace p4 configure p4 counter (including -f) p4 counters p4 jobs (including -R) p4 journaldbchecksums p4 login p4 logout p4 logtail p4 logstat p4 lockstat p4 monitor p4 passwd p4 ping p4 verify Note that the only one of these commands that takes a file path argument is 'p4 verify'. Operators require LIST access to verify a file, but are not limited by their client spec (they don't even need one). Note also that operators can't run 'p4 client', so they can't create or edit their client spec. A superuser could create one for them, but it would be pointless: none of the commands they can run use the client spec. Multiple operators can be created, with any desired user names. As is usual, however, the type of a user can't be changed after he or she is created. Once an operator, always an operator. Finally, note that if a password is set for an operator then they must login (as usual) before running any commands. #308967 ** 'p4 clients' and 'p4 branches' now accept a '-t' argument to output both the date and time of the last update of the client or branch. #308775 (Job #1928) ** 'p4 resolve' now accepts a '-c' option to limit itself to files open in a particular pending changelist. #308703 (Job #36850, #39046, #40348, #41933) ** 'p4 clients', 'p4 branches', and 'p4 labels' now accept a '-E' argument to perform case-insensitive name filtering. #308611 (Job #10863) ** 'p4 filelog' now allows a revision range to be specified. #307793 ** 'p4 rename' is now a synonym for 'p4 move'. #306575 (Job #42888) ** 'p4 archive' can now operate on RCS files via the '-t' flag. #306446, #307153 (Job #7756, #18886, #20385, #24183, #25261, #28208, #30281, #34859, #38949, #39587, #40804, #40834, #41685, #41746, #42691, #44200, #44685, #45078) ** Concurrent operations using the same client workspace over separate network connections are now coordinated using locks in the server; this also applies to concurrent 'obliterate', 'snap', and 'retype' commands. The locking behavior may be disabled using the 'server.locks.dir' configurable. By default, a new directory "server.locks" is created in P4ROOT to hold lock files for workspace locks; the contents of this directory are transient and do not need to be backed up. #304688 (Job #44656) ** Long running integrate commands will no longer block submits if they do not need to add integration history. #302035 ** A new option '-b ' for the command line client allows the user to specify how many arguments should be sent to the server. This option is for use in conjunction with the '-x' option, which by default sends arguments to the server in batches of 128. #302002 ** 'p4 fstat' and 'p4 sync' now take a new '-L' flag. When this flag is used all file arguments supplied must be in full depot syntax and contain a valid (numeric) file revision. The '-L' flag causes file arguments to be processed together by building an internal table similar to a label. This file list processing is faster and more efficient than computing the results for each individual argument. Error handling is subtly different (non- existent files, for example, are ignored) but the performance gain can be significant. #301617 ** 'p4 pull -l' now takes a new '-j' flag. 'p4 pull -l -j' displays a short summary report of the metadata replication state. #301506 ** The 'p4 copy' command will now translate moved source files into paired move/add and move/delete actions in the target. #301255 (Job #44740) ** The server can now detect a database table which was not closed properly due to a power failure or system crash. Each time such an event occurs, a counter is incremented in the table's header. The counter value, if non-zero, is displayed by 'p4 dbstat'. #300930 ** The 'p4 admin checkpoint' command can now be issued against a replica server; the checkpoint is not taken immediately, but rather is performed by the "pull" thread at the next journal rotation that it replicates from the master server. #300870 (Job #3824) ** The "-t" option of "p4 edit" allows the string "auto" to mean that the files being opened for edit should have their file types redetected and looked up again via the typemap. Other commands with similar "-t" options do not support this. #299614 (Job #38221, #39099) ** Unshelving a file opened for edit over a file already opened for edit in the workspace is now allowed. A resolve record is created when unshelving, and the user must then run 'p4 resolve' to resolve the workspace files with the shelved files. #298266 (Job #16321) When a copy of a form is saved in the spec depot, the form text will now include a comment at the top identifying the user who supplied that revision of the form data. #298099 'p4 pull -u' commands in a replica server with monitoring enabled will now display which file is currently being pulled from the master server in the output of 'p4 monitor show -a'. #295632 (Job #23544, #11545, #4383, #14431, #27386, #38044) ** * Provided all server and client components are at 2011.1 or higher release levels, Perforce no longer truncates passwords to 16 bytes. Users with existing passwords that were truncated should reset their password once all components have been upgraded; otherwise they must enter only the first 16 bytes of their password when prompted by a new client. Users who must use a mix of new and older clients should avoid using passwords longer than 16 bytes as the behavior can be confusing. The new password length limit is 1024 bytes. #293927 "p4 copy" will now report "file(s) up to date" when attempting to copy between files that are already identical, rather than "all revisions already integrated". #291190 ** 'p4 pull -l' now takes a new '-s' flag. 'p4 pull -l -s' displays a one-line summary report of pending archive transfers. #291139 (Job #38674) ** The default value for server command logging is now 'server=1'. Sites which were previously not specifying server log levels should direct server log output to a file by setting P4LOG and should periodically rotate the log and clean up old copies to ensure that disk space usage is managed. #290500 (Job #19806, #40554) ** On Mac OS X and FreeBSD platforms, SO_REUSEPORT is no longer set by default on the server's listening socket. To specify that SO_REUSEPORT should be set, configure net.reuseport=1. #289313 ** 'p4 integ' and 'p4 copy' now support the '-m max' option to limit the output to the first 'max' files. #289299 (Job #39394, #43519) ** Added "-k" option to delete to keep the local file on the client. This option (keep) leaves the local file on the client; the file will still be deleted in the repository when the change is submitted. After running the "delete -k" command, the specified files will be marked for deletion in the repository, but will not be deleted on the client. After this change is submitted, the files will be deleted in the repository, but will not be deleted on the client. Without "-k", p4 delete operates as it did previously. #288318 (Job #43504) ** The 'p4 copy' command now produces revision ranges more similar to those produced by 'p4 integrate'. #286960 (Job #2784) ** The new command 'p4 admin restart' can be used to restart a running server using the latest configurable settings. #286630 ** Checkpoints produced by 'p4d -jd' now include MD5 digest files. #286414 (Job #4558) ** The following server configurables may be set to control the automatic enforcement of sufficient available disk space on the server: filesys.P4ROOT.min, filesys.P4JOURNAL.min, filesys.P4LOG.min, filesys.TEMP.min, and filesys.depot.min. #286303 ** A new journal record type @dl@ now appears in journals and checkpoints. @dl@ records contain information about file content which has been deleted from the server's repository by a command such as 'p4 obliterate', 'p4 archive', 'p4 shelve -d', etc. External programs which parse journal records should be enhanced to recognize the @dl@ records and skip them. #285084 ** The new command 'p4 diskspace' can be used by a super user to display the current disk space usage conditions on the server. #284481 (Job #546, #2048, #13073) * Symbolic links are now supported on Windows 7, Windows Vista, and Windows Server 2008, using NTFS file systems, provided that the CreateSymbolicLink privilege has been granted, or that Perforce is running as Administrator for administrators with UAC enabled. If the target of the symbolic link does not exist, the symbolic link is created as a link to a file, not as a link to a directory. #283889 ** New commands 'p4 monitor pause' and 'p4 monitor resume' can be used to pause and resume long-running 'verify' and 'pull' commands. #283726 (Job #32090, #42917) ** 'p4 license -u' shows the license limits and the entity counts towards the limits. #283449 (Job #3153) ** The new server configurable 'journalPrefix' can be used to persistently configure the directory or prefix for checkpoints and rotated journals. #282209 'p4 client' now supports a new flag '-s'. This flag allows the user to switch views without the need for calling a form editor. The view can either be a template from a client '-t template' or a stream '-S stream'. Switching views is not allowed if the client has open files, unless the force '-f' option is used. #281596 (Job #2122, 42800) ** 'p4 sync' has been optimized when replacing files on a client that have been remapped but are identical. Previously the server always sent the identical file to the client, this change uses MD5 digests on the server to see if the file needs sending. #281208 (Job #5991) ** 'p4 sync' now supports a new flag '-s'. This flag adds a safety check using MD5 digests to prevent overwriting previously synced files that have been modified outside of Perforce control. An alias 'p4 update' has been added for 'p4 sync -s' for users more familiar with this command. #281461 ** The new command 'p4 journaldbchecksums' can be used by administrators of replicated configurations to verify that table checksums on the replica match those on the master server. #280421 ** The configurable 'lbr.retry.max' can be set to limit the number of times that a replica server will retry a failed file transfer. #280322 ** The configurable 'rpl.compress' can be set to cause a replica server to enable data stream compression for connections it makes to the master server. Legal values of compression are: 0-3. #280226 ** The replica now retrieves compressed binary archives from the master server in their compressed format. #280165 ** 'p4 verify -t' can be used on a replica server to schedule the transfer of missing or damaged file revisions from the master. #279986 (Job #26286, #36423, #42369) ** 'p4 verify' now processes files in batches, and will no longer run out of virtual address space when processing an extremely large number of file revisions. The batching is disabled if the '-z' flag is used. #278207 (Job #37707) ** 'p4 login' now supports a new flag '-h host'. This flag allows a super user requesting a login for another user to bind the ticket to a different host (IP address). Bugs fixed in 2011.1 #744802 (Job #69776) ** A server with security=3 which uses a P4AUTH server that has an auth-check trigger defined will no longer perform password strength checking, since the external authentication system is responsible for enforcing password strength requirements. #598303 (Job #63987) ** A memory leak in replica on-demand file transfer is fixed. #515167 (Job #59192,#51548) ** A memory leak in the client workspace lock feature is fixed. #499291 (Job #53456) ** Resolving a move would fail if the target of the move was already opened for add on another client. This has been fixed. #479968 (Job #56770) ** On a Windows server, if 'p4 admin restart' cannot successfully quiesce all the server threads, it will now issue an error message and force the server to shut down, rather than crashing. #444979 (Job #55038) ** Running 'p4 integrate/merge/copy' with a bad P4CHARSET value resulted in a server crash. This has been fixed. #437449 (Job #53834) ** 'p4 unshelve' would allow unshelving a '+l' file that has been already opened in a different workspace. This has been fixed. #425753 (Job #53138) ** A replica server which re-processes a segment of journal data containing one or more row-deletion (@dv@) records will no longer halt replication with the message "Journal record replay failed!" #405122 (Job #52037) ** Change #392899 introduced a possible crash when 'p4 sync' schedules resolves. Fixed. #395917 (Job #51611, #51599) ** Some tunables were not initialized to the correct value. These bad settings could result in non-optimal diff output for large files and some bad transfer errors when syncing files that have a different base file type (lazy copy) compared to the client file type (Binary+D). #395714 (Job #51605) ** 'p4 integrate' could fail to propagate move actions when the moved file had been overwritten from another branch. Fixed. #392899 (Job #50843, #51372) ** 'p4 integrate' would include additional changes in certain circumstances involving cherry-picking of copied revisions. This has been fixed by reverting to older behavior of picking the base revision just prior to the cherry-pick. #390611 (Job #50948) ** 'p4d -xu' would incorrectly increment the UnlockCount. #388275 (Job #50814) ** Performance changes to the 'p4 integrate' command would incorrectly report a 'relock' failure when the maxlocktime limit was exceeded. #387901 (Job #50836) ** Spec depot revisions created by a 2011.1 server have an incorrect filesize value. To correct the data, run 'p4 verify -v' against those spec depot revisions after updating to this patch. #385159 (Job #49324) * On Windows Vista, Windows 7, or Windows 2008, a client running as Administrator would fail to properly process file names in non-ASCII character sets (such as Shift-JIS). #380915 (Job #49890) ** Incompatible journal data which a replica can not handle due to a central server upgrade would be silently ignored by the replica which should have stopped replication. Now, a central server upgrade will stop replication by an older replica. Also, in case of replication errors such as a failed connection, the replica will wait for a minute before retrying so as to not cause wasteful network traffic. This wait time may be set with a -b flag on the pull command. #379362 (Job #50416) ** 'p4 integrate' would miss integrations in a scenario involving a particular combination of copies and ignores. Fixed. #378640 (Job #50324) ** A replica server would experience concurrency bottlenecks on the rdb.lbr table when replicating 'p4 obliterate' or 'p4 archive' operations: unrelated archive transfers would be blocked. #378292 (Job #50325) ** 'p4 integrate' will now search the entire branch view when looking for moved file pairs, even when limited by filespec. #372168 (Job #49630) ** An interactive 'p4 change' command no longer keeps the client workspace locked during the form editing session. #371869 (Job #49691) ** A performance change to 'p4 dirs' in this release caused a regression with respect to the time taken in detecting a twisted client map. In this scenario 'p4 dirs' has the potential to block other processes, this has been fixed. #363564 (Job #43979) ** Server start up errors on Windows may not be logged. These errors will now appear in the Windows Application Event log. #355223 (Job #6144) ** Triggers may now use a %quote% variable which expands into a " character. #342070 (Job #47657) ** 'p4 copy' will no longer treat ktext files in remote depots as needing to be re-copied. #339848 (Job #47469) ** 'p4 pull -u' no longer reports 'Broken pipe' when transferring files with +X filetype modifiers. #336867 (Job #46210) ** 'p4 unshelve' will no longer open files in more than one changelist after changing the client view. #332013 (Job #46774) ** A 'p4 sync' via a proxy of a server file with a corrupted librarian filetype field will no longer hang. #330225 (Job #46683) ** A server which fails to start due to an invalid license will now report that error to the P4LOG file (if set), not to stderr. #324939 (Job #46264, #48538) ** Performance of protection table processing against a user who is a member of many groups has been significantly improved. #323993 (Job #46191) ** Server trace messages now obey the P4LOG setting on Windows. #323644 (Job #46153) * ** An already-logged-in superuser may specify his own username as the argument to the 'p4 login' command. #321044 (Job #45968) ** Setting filesys.bufsize to 2147483647 no longer crashes the server. #320241 (Job #43747) ** The error handling for 'p4 submit' when there are outstanding shelved files has been improved to not make suggestions that may cause data loss. #318067 (Job #28741) * 'p4 set' now properly supports 'P4CHANGE' and 'P4AUTH' settings. #318053 (Job #32479) ** A 'p4 revert' command might fail to issue the message "//depot/file has been moved, not reverted" if the command also included the revert of at least one other move operation. #317078 (Job #36720, 44704, 44808) * ** The replication journal position kept in a state file by a replica server or the 'p4 replicate' command could be corrupted or lost in an out of disk space condition. Now when state files are written a temporary file is used and moved into place which should preserve the existing state file if something goes wrong when updating it. Also, if the state file should be empty or missing, the replica server will refetch from the start of its last used journal position and not from journal number 0. #317030 (Job #45669) ** * In some cases, a super user logging in as another user might fail. #316949 (Job #45646) ** The replica now properly handles the case where a +S type file is purged by the addition of a subsequent revision while it is simultaneously being transferred to the replica. #316119 (Job #45018) ** Replica servers will report a warning if they are running in a different timezone than their master server. This timezone difference causes problems with keyword expansion. #315817 (Job #44794) ** If a master server crashes with outstanding transactions, replicas would not detect this and not apply journal records. Fixed. #314387 (Job #45044) ** Shelving a branched file with the +m storage modifier will now copy the modified time correctly from the source of the branch. #314293 (Job #41311) ** Accidentally configuring more than one metadata 'p4 pull' command in a replica server no longer exposes the replica server to the risk of metadata corruption. #312534 (Job #45414) ** 'p4 ping -p10 -i3' now flushes intermediate messages to the client prior to the pause between tests, rather than after the pause. #312469 (Job #45394) ** 'p4 counter -f -i ' may now be used (by a super user) to increment a protected counter. #312141 (Job #45413) ** 'p4 dbstat -s' now reports a syntax error if any arguments follow the '-s' flag. #311519 ** Files opened 'virtually' by 'p4 integ -v' or 'p4 copy -v' and then reopened with 'p4 edit' will no longer be considered 'virtual' and will now be cleaned up correctly by 'p4 revert'. #310266 (Job #39450) * 'p4 set' now issues a warning if asked to set an unknown variable. #310094 (Job #45337) ** 'p4 unshelve' now properly unshelves a file which has been shelved while opened for edit, then sync'd to a deleted revision. #309553 (Job #11404) ** 'p4 obliterate' is now able to properly clean up the working/locks records for a file which has been opened for edit, then sync'd to a deleted revision. #308291 (Job #18396) ** 'p4 sync -f' will now delete an existing client file when syncing to a deleted revision that the client was currently sync'd to. #307786 (Job #13229) ** The error message for a 'p4 integrate' command with a missing file path in either the source or target now indicates which argument was missing the file path. #307622 (Job #41007, #43965) ** 'p4 configure show' will now include the p4d '-i' and '-f' flags, if either was set when the server was started. #307552 (Job #33638, #43875, #43876) ** Command line flags that expect non-negative integer values, e.g. 'p4 clients -m max', now validate the argument more completely. #306175 (Job #44961, #44962) ** Access to a non-head revision in a remote depot will no longer report "no file(s) at that revision". #305502 (Job #44849) * Errors detected by P4CLIENTPATH will no longer cause the message "Fatal client error; disconnecting!" to be displayed. #305025 (Job #27168, #32828) ** When a super user logs in as another user, the expiration value for the ticket will now be based on the group membership of the logged-in user, not on the groups to which the super user belongs. #304734 (Job #44882) ** Import or sync of a remote ktext file no longer erroneously fails due to faulty MD5 verification. This has been fixed. #304010 (Job #41174) ** 'p4 configure show ' will now show both named and unnamed configurable values, if both are set for that configurable. #303228 (Job #44762) ** 'p4 fstat -Ol' will now display fileSize and digest values for revisions that have been purged, archived, or moved. #303074 (Job #43929) ** Configurable 'net.backlog' can now be set as high as 64K. #302300 (Job #18950, #25816) ** 'p4 change -i' no longer allows a user who is not the owner of the pending changelist to update that changelist. #301961 (Job #43814, #44254) * P4CONFIG files located in the root directory of a Windows filesystem are now located properly at startup of a command from a sub-directory. #300089 (Job #33102, #28493) ** form-in and form-save label triggers are now fired by 'p4 tag', and form-in and form-save change triggers are now fired by 'p4 submit -d' and by 'p4 change -t'. #299335 (Job #44391) ** 'p4 diff' of a file opened for edit, but sync'd to a deleted revision, could incorrectly diff the file against an unrelated depot file. #297400 (Job #43604) ** Some wildcard expressions against a remote server (windows), could return incorrect (missing) results. #297383 (Job #44288) ** Extra spaces in the 'p4 configure' command no longer result in the setting or clearing of a configurable with the wrong name. #291473 (Job #41841) ** 'p4 configure show' now indicates if a configurable setting was set via P4DEBUG, via the '-v' argument, or via 'p4 configure set'. #291277 (Job #43917) ** A spec depot cannot be deleted unless all of its contents have first been removed with 'p4 obliterate'. #290793 (Job #23413) ** 'p4 depot -d' now prevents the deletion of a depot which still contains the archive content for files in other depots. After obliterating the other files which are lazy copies of the files in this depot, you can delete the depot normally. #290314 (Job #41070) ** 'p4 opened -u' no longer requires setting P4CLIENT. #290128 (Job #41558) ** 'p4 change -o' now requires only 'list' permission, not 'open'. #290043 (Job #23787, #38931) ** The type of an existing depot cannot be changed after creation. #288884 (Job #29921) ** *** Librarian filenames on case insensitive unicode mode servers will now case fold non-ascii characters. #288772 (Job #34940) ** The owner of an empty pending changelist is now allowed to change the client field of that changelist via 'p4 change'. This can be useful when handing off a shelf from one user to another. #288193 (Job #22967) ** When one or more 'p4 obliterate' commands have resulted in the situation where the oldest available revision of a file is an 'edit' revision, 'p4 describe' of the changelist that created that 'edit' revision no longer fails with a fatal error. #287921, #288760, #288833 (Job #43557, #43612, #31456, #43628) ** The server will no longer allow any of the counters used by the server itself (change, job, journal, etc.) to be set to a negative value or to a non-numeric value. #287785 (Job #43552) ** Taking a checkpoint on a server with journaling turned off no longer crashes the server. #287583 (Job #24588) ** The file suffix field for a spec depot now rejects invalid suffix values, such as "@", "...", and "/". #287548 (Job #2235) ** 'p4 diff -sd' and 'p4 diff -sl' no longer list files opened for delete in their output. #287284 (Job #42965, #43873) ** 'p4 pull' now removes obliterated files from the replica. #285810 (Job #43267) ** 'p4 configure set' and 'p4 configure unset' now support tagged output. #285333 (Job #43217) ** p4d -xf 18362 now resets auth-check-sso and service-check triggers. #284948 (Job #9638, #42928) * When reading settings from P4CONFIG files, trailing blanks are now ignored. #284828 (Job #43034) ** In a P4AUTH configuration, the 'license' command is now forwarded from the outer server to the central server. #283363 (Job #43011) ** When a spec depot is in use, and a spec object was deleted, the record in db.revsx for the deleted revision contained invalid data for the digest and fileSize columns. This will no longer occur. #283211 (Job #29324, #42505) ** Accidentally defining P4CHANGE or P4TARGET to loop back to the same server is now detected as a runtime configuration error. #281564 (Job #41265, #42755) ** The replica server no longer needs to be restarted following the addition of a new depot to the master server. #281180 (Job #25034) ** 'p4 revert' no longer reports a librarian error when a revert of a modified +S filetype file fails because the revision that is opened has already been purged from the repository. #281105 (Job #13393) ** 'p4 describe' no longer reports a librarian error when describing a change which includes a purged revision of a +S filetype file. #279464 (Job #2309, #36424) ** 'p4 verify' no longer processes files in remote depots. #279258 (Job #28640, #33247) ** 'p4 verify' no longer reports MISSING! for +S files purged after the verify command has started. #278478 (Job #3454) ** 'p4 verify -q' no longer prints 'file(s) already have digests'. #277960 (Job #41593) ** If your password has expired, 'p4 login' will no longer allow you to login with the old password. -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r10.2/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Major new functionality in 2010.2 #274269 (Job #20896) ** P4AUTH (central authentication) and P4CHANGE (central changelist) server options are now fully supported. Both options have long been present but undocumented. As of this release, a server that is being used for authentication must have a valid license. See the System Administration Guide for more details. #272848 (Job #19628) ** This release builds on previous replication infrastructure adding two major enhancements: (i) depot file (content) replication Perforce replicas can now be configured to transfer new file content as well as metadata. The transfer is initiated as soon as the replica detects new version content. Depending on how frequently new content is committed multiple processes can be started to handle the various loads. (ii) server-to-server replication Replication has now been incorporated into the communication protocol. This allows a configured replica to run without the need for external processes to drive the transfer. Configuration is accomplished by using the new 'p4 configure' command. See the replication chapter in the System Administration Guide for more details. #254889 ** A depot of type 'archive' may be defined, and used to implement the controlled transfer of revision content to archival storage. An 'archive' depot is typically mapped to a storage location which can be placed offline to save on storage costs. Having defined an archive depot, the 'p4 archive' command can be used to move revision content to the archive; the 'p4 restore' command can be used to restore archived revisions. The 'p4 files' command now takes a '-A' argument to limit output to files in archive depots. See 'p4 help archive' and 'p4 help restore' for more information. #264717 * The p4 client, and the C++ client API, now support client protected regions. Perforce client regions define "safe areas" in a Perforce client's filesystem where files can be accessed or modified, under the control of the Perforce server (through the API); any attempt by a Perforce server to direct participating client APIs to access or modify files outside a client protected region will cause a client-side error in the client API and the relevant files will not be touched. To enable this feature, you may define the P4CLIENTPATH variable (as an environment variable, via 'p4 set', or in a P4CONFIG file) to a (semicolon-separated) list of one or more local filesystem directories. #259157, #261720 (Job #1291, #28884) * ** By default, transfer of data between the client and server is now verified against corruption. This check is performed on the client for 'p4 sync/revert/unshelve/integ' and on the server for 'p4 submit/shelve'. These checks may be turned off using 'p4 configure' if they adversely affect performance. #259145 ** The new '-I' flag causes 'p4 annotate' to trace all integration records, rather than only branch records. If a line was added in one branch, merged into a second, and merged from there into a third, 'annotate -I' on the third branch will show the first branch's changelist as the source of that line. #257689 ** A new journal record type @nx@ now appears in journals and checkpoints. @nx@ records contain identification information, such as timestamps, checksums, and version numbers, and are recorded by the server periodically, including at the start and end of each checkpoint or journal, when a server is started or shut down, and when the database is upgraded. External programs which parse journal records should be enhanced to recognize the @nx@ records and skip them. #257688 ** To help administrators keep track of successful checkpoints, a new internally generated counter 'lastCheckpointAction' has been added which contains the operation timestamp. Also, when the checkpoint completes, the MD5 digest of the checkpoint is written to the file 'checkpoint.N.md5'. Together these data points can help in verifying complete and undamaged checkpoints. Note that if the -z flag was used to compress the checkpoint, it must be uncompressed to verify the checksum. When restoring from a journal, the server will now produce a warning if the journal was written by a different version of the server, and will produce an error if the journal was written using different case-handling flags than are currently defined for the server. #255892 (Job #1492) ** The change spec has a new field, 'Type', to specify whether a change is 'public' or 'restricted'. By default, a change is 'public', which means that it is visible with 'p4 changes', and can see the change descriptions in 'p4 change' or 'p4 describe'. The type of 'restricted' will restrict the view of the change depending on user permissions. Owners may always see their changes, and 'restricted' can be overridden by an admin user with '-f'. This field affects the operation of 'p4 change', 'p4 changes', and 'p4 describe'. See 'p4 help change', 'p4 help changes', and 'p4 help describe' for more information. #255729 ** The new 'p4 copy' command allows files to be copied (integrated) from one path to another based on file content differences rather than on prior integration history between them. Files opened with 'p4 copy' will be resolved automatically in a single step, and will not be downloaded to the client if the '-v' flag is used. See 'p4 help copy' for more information. #246820 (Job #14713, #23831, #23822, #41783) ** Server configuration variables are now stored in the db.config table, and may be displayed and set using the new administrator- only command "p4 configure". Most server configuration variables, including tunables and debug levels, are now dynamic, and will take effect beginning with the next connection to the server. Minor new functionality in 2010.2 #281541 (Job #42790) ** 'p4 pull' now supports the '-J prefix' flag to allow the specification of the journal file location on the master server. #275795 (Job #16285) * ** 'p4 ping', which sends messages from the server to the client and back, timing performance, is now supported. It has been present since 2009.2, but undocumented. #275057 (Job #39375, #39412, #39421) ** 'p4 fstat -F' filtering now supports regular expression matching similar to that of 'p4 grep'. The syntax to enable this filtering is '~='. #264938 ** 'p4d -jr' now has new flags. '-s' will cause recovered journal records to be written to the server's journal file. And '-m' which records new file revisions in a new table 'rdb.lbr' which is used to fetch the archive data of those new revisions by a replica server. #264054 * 'p4 replicate' now has a '-R' flag to attempt to reconnect to a server continuously. #262094 * A new flag '-T' was added to 'p4 replicate' that allows the user to specify a quoted, space separated list of table names which should not be transferred for replication. #262649 (Job #7727) ** A new flag '-q' has been added to 'p4 sync' and 'p4 labelsync' which will suppress informational messages during operation. #261187 ** A new flag '-T' was added to 'p4 export' that allows the user to specify a list of database table names which will be excluded from exported output. #259417 ** A new flag '-t' was added to 'p4 change' that allows the user to change the change type on the command line. This is useful for scripting or triggers #259124 ** 'p4 annotate' will no longer operate on files larger than 10MB. This limit can be changed via the dm.annotate.maxsize configurable. #257282 (Job #39527) ** When the target of an auto-merge is a file that was synced from the depot and is not flagged as writable (i.e. open for "integ" rather than "edit"), the client file's digest will be compared against the corresponding digest in the depot. If it does not match, the resolve will terminate with a "tampered" error message. If the client file is verified as matching the depot revision, the server will use the depot revision for the merge rather than transferring the file from the client. #256953 (Job #3416) ** Browsing remote depots has been improved by reducing the amount of data that is passed from the remote server to the local server and then processed. In particular 'p4 dirs' performance has been improved significantly by computing the directories at the remote end. Both local and remote servers need to be upgraded to this release to benefit from these improvements. #252485 ** When a deleted file is added back to the depot by syncing to an earlier revision and running 'p4 add', an 'add from' integration record will associate the added revision with the previously synced revision. This will make it possible to determine when an 'add' was a reversal of a delete as opposed to a new file. #250349 (Job #7605, #21295) ** The server now tracks the date when each user most recently changed their password, and also provides a simple password aging mechanism. The date when the user last changed their password is now visible as a new read-only field in the user spec, and is also displayed by the new '-l' flag to 'p4 users'. The group definition now contains a new PasswordTimeout field which may be set to the number of seconds after which members of this group will be required to change their passwords. If a user is a member of multiple groups, the longest timeout is used. The password and ticket expiration information is now provided as tagged output from 'p4 -ztag login -s'. #250142 ** A new type of user, called a 'service user', can be defined by specifying 'Type: service' in the user definition. Service users are useful for authenticating and securing network traffic between intermediate servers in a distributed configuration. Service users do not count against your license limit, and it's not necessary to set the 'jobView' or 'reviews' information for a service user. A service user can only run the following commands: login, logout, password, info, and user. Service users should be used as the value of the '-u' flag for intermediate services (proxies, replica servers). When a server connects to another server for remote depot access or for replicating data, the connecting server will authenticate itself using the service user, and the accepting server can control access by including the service user in the protections table specifications. When using service users, you should be running at server security level 1 or higher, since service users without passwords are not valuable. External authentication for service users can be implemented by providing the 'service-check' trigger. To include service users in the output of 'p4 users', specify '-a'. #249892 * On Mac OS X, 'p4 set' now sets Perforce variables as user or system preferences in your Mac preferences folder. #247383 ** 'p4 info' now supports a new flag '-s'. If this flag is provided, the info command will no longer check the user name and client name to verify whether they are known to the system or not. For uses where checking for unknown user names or client names is unnecessary, 'p4 info -s' should provide faster execution. Bugs fixed in 2010.2 #598303 (Job #63987) ** A memory leak in replica on-demand file transfer is fixed. #470383 (Job #53678,#56359) ** On Windows an external application will no longer cause sporadic loss of the RCS archive head-1 revision. #427939 (Job #49890) ** Incompatible journal data which a replica can not handle due to a central server upgrade would be silently ignored by the replica which should have stopped replication. Now, a central server upgrade will stop replication by an older replica. Also, in case of replication errors such as a failed connection, the replica will wait for a minute before retrying so as to not cause wasteful network traffic. This wait time may be set with a -b flag on the pull command. #425753 (Job #53138) ** A replica server which re-processes a segment of journal data containing one or more row-deletion (@dv@) records will no longer halt replication with the message "Journal record replay failed!" #423699 (Job #52987, #52837) ** Replica server performance could be severely impacted by read-only commands which access new files that have not yet been transferred. #370742 (Job #49769) ** Moved files with the +S filetype will no longer be lazy-copied. #370100 (Job #46264, #48538) ** Performance of protection table processing against a user who is a member of many groups has been significantly improved. #369984 (Job #49691) ** A performance change to 'p4 dirs' in this release caused a regression with respect to the time taken in detecting a twisted client map. In this scenario 'p4 dirs' has the potential to block other processes, this has been fixed. #369871 (Job #44794) ** A replica server might stop replicating if the central server crashes with outstanding transactions. Fixed. #369868 (Job #43062) ** A monitor-enabled replica server will no longer log the message "'pull' exited unexpectedly, removed from monitor table." when 'p4 monitor show' is issued. #361749 (Job #49095) ** net.mimcheck level 5 did not validate properly causing all commands through a non-local intermediate server to be rejected. Fixed. #308107, #345509 (Job #44640, #44713, #44875, #47466) ** 'p4 print -o' and 'p4 unshelve' no longer fail with a bogus 'corrupted during transfer' error with shelved ktext files. #345500 (Job #46430) ** The replica server will no longer report "No such file" errors when a move operation is shelved. #345377 (Job #47944) ** Metadata changes to replicas could be lost when forms with large numbers of items, such as groups, are changed. Fixed. #345072 (Job #48002) ** A 'p4 change -o' operation that fails to list files due to excessive joined mappings will now produce the appropriate error message rather than silently omitting the file list. #331394 (Job #46820) ** A failed 'p4d -jr' operation will now set the operating system exit status to a non-zero (failed) value. #322148 (Job #42260) ** A replica server will now only transfer a single revision of an RCS file at a time from the master server. #322108 (Job #44853) ** Replica servers will no longer report spurious digest mismatch errors for shelved file content; replica servers in a different timezone than the master will no longer report spurious digest mismatch errors for ktext files containing $Date$ or $DateTime$. #320770 (Job #45601) ** Accessing an offline remote depot could cause a server crash. #320763 * ** (Job #41078) Improve network protocol sanity check to prevent crashes when garbage data is received on a connection. #315777 ** (Job #45062) Nested server side errors could result in allowing premature invocation of a new command. This new command on the same connection could result in a server crash. #310293 ** Change 256113 (from the initial 2010.2 release) has been reversed so that files opened by 'p4 integrate -v' or 'p4 copy -v' may be reopened by 'p4 add' or 'p4 edit'. Note that these files may not be submitted until they are manually added to the workspace. #309223, #309512 (Job #45042, #45121) ** In a specific happenstance a Perforce Server trigger may inherit a Windows file handle which belongs to a depot repository file. If the trigger holds that handle long enough, the submit using that repository file can fail. Files are no longer inherited. #300591 (Job #43858, #44353) ** Accidental multi-threaded sharing of a single client connection will no longer cause a server crash. #297671 (Job #44375) ** Changes to the locking algorithm for SOLARIS10 could result in a server hang when multiple p4d processes were chasing the same file locks. #297301 (Job #44354) ** 'p4 job -i' could block other commands while waiting for a lock. #294117 (Job #43930) ** 'p4 dirs' could hang if the client had excessive exclusionary mappings. Now it will exit with an error instead of hanging. #293676 (Job #43942) ** 'p4 shelve' commands specifying invalid file names no longer crash. #292172 (Job #43797) ** #293382 (Job #44092) ** In rare cases a Windows virus scanner may block access to the server logfile for extended periods of time and cause a server exit or crash. This has been corrected. #293249 (Job #43888) ** 'p4 delete -v' would fail to preserve propagated traits if the file was not on the user's have list. This has been fixed. #288575 (Job #42969) ** The replica server will no longer print the error message: "dbget rdb.lbr: no read lock!" during archive transfer. #285568 (Job #42662) ** 'p4d -xf 925' did not update the change field of the locks table, resulting in incorrect reporting of the 'otherChange' field by 'p4 fstat'. This has been fixed. #285240 (Job #42828) ** * A 'p4 sync' via a proxy of a missing server file will no longer hang; also, the client will no longer report a digest mismatch related to the failure to deliver the missing file. #285127 (Job #42971) ** A replica server will no longer report archive transfer errors for the contents of deleted shelves. #285003 (Job #43149) ** An outer server using a P4AUTH (central server) would fail on submit due to incorrect checking of local user count. This has been fixed. #283415 (Job #36103, #38200, #42977) ** When the server is logging commands via -vserver=n, replication support operations such as user-export, rmt-Journal, rmt-FileFetch would be reported many times, now they are only reported when initially run or when they take a long time. "-vserver=4" will force even these repeated operations to be logged. #282873 (Job #42997) ** On 32-bit Windows, a bug with the heap manager could result with memory allocation problems that could lead to a server crash. This has been fixed. #282799 (Job #33543) ** 'p4 sync #none' would make a scan of the db.rev table for the specified argument even though its redundant. #282081 (Job #42889) ** Removed an invalid flag from the help output of 'p4 archive'. #282065 (Job #42858) ** If a Windows server was running with a non-zero security level, excess data was being returned on the first response from the server to the client. This has been fixed. #280377 (Job #40748) ** Metadata replication with p4 pull stored information in a counter 'sequence' however that causes the counters table to differ from the master server. This information is now kept in a file 'state' instead. This file name may be changed with the 'statefile' configurable. #280361 (Job #26753,#41870,#42313) * 'p4 -p "rsh:p4d -i -r ." passwd < password.txt' now works properly on Windows. Additionally, marshalled invocations such as 'p4 -G login < password.txt' now work properly on Windows. #280347 (Job #42664) ** 'p4 copy' will no longer delete files from the target if they are excluded from the branch view. #280332 (Job #42226) ** When a replica fails to transfer a binary file revision from its master server, it no longer leaves a temporary file in the replica's depot directory. #280021 (Job #42221) ** 'p4 pull' run interactively would sometimes hang. Fixed. #278187 (Job #42429) ** 'p4 pull' would not work for unicode mode servers. Fixed. #277329 (Job #42231) ** Excluded trigger paths were ignored by shelve-submit triggers when file arguments are used in the 'p4 shelve' command. This has been fixed. #276005 (Job #28693) ** The central changelist feature (P4CHANGE) can now be used in configurations where all servers are Unicode-enabled. #275889 (Job #42081) ** 'p4 print' of a shelved revision via the proxy will no longer erroneously print the content from an earlier version of the shelf. #275814 (Job #6589,#37177) ** Windows UNC paths now work in a client root and depot map. #275765 (Job #25700) ** In a P4AUTH configuration, to determine whether a username is known, run 'p4 -ztag info' against the central server. When run against an outer server, 'p4 -ztag info' now always displays that the username is unknown. #275754 (Job #40923) ** In a P4AUTH configuration, 'p4 info' displays the server license information only when run against the central server. #275738 (Job #32971) ** User job views are now operational in the outer server of a P4AUTH configuration. #275581 (Job #41914) ** 'p4 unshelve' could create db.have/db.rev inconsistencies if unshelving files that were not on the shelving client's have list. This could happen if a user shelved files after 'p4 delete -v'. This has been fixed. #275083 (Job #40842) * 'p4 replicate' now catches cntl-c to shutdown cleanly. #274912 (Job #39630, #40903) ** An administrator may now use 'p4 shelve -d -f' to delete a shelf without having to specify a valid client name for the command. #274855 (Job #41575) ** 'p4 integrate' with no arguments now issues a usage message. The arguments to 'p4 integrate' must specify either '-b branchspec' or exactly two file specs. #274673 (Job #42028) * ** *** Perforce crashes or hangs on some 64-bit Linux platforms due to glibc change. Fixed. #273231 (Job #41819) ** 'p4 describe' could spend a long time scanning the 'db.integed' table before giving up with the error 'Can't find successor rev'. This was due to Job #37058 which is also fixed in this release. #271204 (Job #41504) ** 'p4 sizes', 'p4 files', and 'p4 sync' now support the '-m max' option to limit the output to the first 'max' files. #271044 (Job #39870) ** 'p4 move' has been improved to check for content changes before transferring files to the server. By checking if the source and target files are the same, 'p4 move' can implement a lazy copy instead of adding extra files to the archive. #270938 (Job #41442) ** On a case-insensitive server, 'p4 counter -f minclient 2009.2' no longer sets the minClient counter to an invalid value. #270765 (Job #41319) ** Delete -v would, in some cases, generate an incorrect error "Can't delete (already opened on this client)" message, and refuse to delete a file even if file was not opened on that client. #270764 (Job #40730) ** Spurious error messages were generated by p4 diff -du when a deleted file was diffed. Diffing deleted files generates a "delete diff" that removes all of the lines of the deleted file if the output of diff -du is run through patch. #270710 (Job #7326, #41203) ** New tunable 'dm.user.noautocreate' has been created to provide control over automatic user creation. By default, if unset or set to 0, the server allows users to be created on the fly as permitted by the protects table. If this tunable is set to '1', users may only be created using the 'p4 user' command. If set to the most restrictive value of 2, users may only be created by a super user using the 'p4 user' command. #270688 (Job #16379) * Use of a .p4tickets file with DOS-style line end conventions no longer confuses Unix/Linux clients, and the tickets file can thus now be shared between different systems. #269913 (Job #41053) * ** The merge algorithm has been improved to detect a delete adjacent to a conflict, and include the deleted lines in the conflict region. #268822 (Job #41101) ** A trigger specification which mentions a %variable% whose name exceeds 64 characters will no longer cause a server crash. #267930 (Job #40800) ** 'p4 describe' of a pending changelist now properly includes files with leading special characters in the Affected Files list. #264435 (Job #6479) Version resources are now embedded into executables on Windows. #264291 (Job #36052,#34255) ** The performance of 'p4 unlock -f' has been greatly improved for sites that have many files open. #263471 (Job #40589) ** 'p4 revert -a -k files...' no longer issues the error message 'Illegal command usage. Try 'p4 help' for info.'. #263034 (Job #40520) ** If a trigger emitted "\n" as its standard out, and nothing else, then the server would access an invalid memory location and might crash. #261184 (Job #39375, #39421) ** Implements two new escape combinations to fstat. Allows user to specify \0 to represent an empty field and \... to represent the wildcard expression ... #260495 (Job #35426) ** The TCP/IP listen() 'backlog' parameter may now be configured to a value larger than 5 on Windows, and the default backlog value is now 10 on all platforms, whereas formerly on Windows it was 5. #258947 (Job #32695) ** Attempting to labelsync a revision that is not in the label's view will now produce the correct "not in label" error rather than "no permission". #258410 (Job #40020) ** 'p4 dbschema' is now present in the output of 'p4 help commands'. #257615 (Job #023018) ** Duplicate log output is written to log when certain conditions are met. This has been fixed. #257026 (Job #39846) ** 'p4 describe' of a pending change allowed users without 'list' permission for its files to view them. This should work the same as describe of submitted changes. Both should restrict running the command to having 'read' access (or 'list' if '-s' is used), but should only list files to which there is at least 'list' access. This has been fixed. #256225 (Job #39682) * 'p4 replicate -x -s ' would not update the statefile on journal rotate exit (the -x flag) in a way such that the next run of the command would continue with the next journal. Fixed. Also, the -o option would leave the target file read only on journal rotate exit. Also fixed. #256195 (Job #38909) ** Operations that produce no result because of exclusions in a a combination of mappings (e.g. protect + client + branch) should now more accurately produce an error message that indicates which mapping was empty due to exclusions. For example, integrating into an excluded client path could previously report "no permission for operation," and will now report "not in client view". A more subtle effect of this fix is a change from "no permission" errors (insufficient access) to "protected namespace" (no access at all) for some commands where the user does not have "list" access. #256113 ** Files opened for branch but not present on the client (the result of 'p4 integrate -v') may no longer be reopened for 'add'; this was unintended and in most cases undesirable behavior. Users who had been making use of this behavior to avoid extra downloads when renaming files should be able to get similar (but better) behavior with a combination of 'p4 sync -k' and 'p4 move'. #256017 (Job #39601) ** 'p4 unshelve' operations are now logged to the audit log when audit logging is enabled. #255335 (Job #14771) * ** Handling of ^C interrupts of 'p4 sync' commands has been improved: the client's ^C signal handler now flushes buffered messages, and the server's connection-dropped logic now processes buffered acknowledgements more thoroughly. #254916 (Job #39653) ** The '-T' flag to 'p4 fstat' has been fixed to correctly handle the tags otherOpenN, otherLockN, otherActionN, and otherChangeN. #253916 (Job #39595) ** 'p4 integrate -t' will now correctly propagate the filetype of the source when the target file is already open for integrate. #253773 (Job #39458) ** The 'have list' could become confused when a file was opened, deleted at the head rev, synced, remapped to a different file, and synced again. This has been corrected. #253333 (Job #23248) * If the Perforce client was unable to delete a binary file on a Windows platform due to the file being in use by another process, the file was being mistakenly left with read-write permissions, instead of being restored to read-only permissions. #253325 (Job #15981) ** When 'p4 integrate' is run with a branchspec and multiple toFile arguments, each argument is processed fully before starting on the next. This should prevent the "muddled resolve" error that could result from a file being opened for branch multiple times by a single command. #253264 (Job #22184) ** A usage error now occurs for 'p4 submit -d xxx -i', since the -d and -i flags cannot both be used together. Prior to this change, the -i flag was quietly ignored in this case. #253055 (Job #37058) ** A 'copy' resolve will no longer override an earlier 'moved' and change it to an 'ignored'. This should prevent a subsequent 'describe' of that change from producing a 'can't find successor rev!' error. #252662 (Job #37694) * When using a Perforce client on Windows that spans multiple drives, drive letters were being mistakenly processed in case-sensitive fashion. They are now once again automatically lower-cased. #252513 (Job #3830) ** Files that were open for branch before being reopened for add will now be deleted from the workspace when reverted. New files opened for add will still be "abandoned" on revert. #252446 (Job #20380) ** The performance of 'p4 dirs' has been greatly improved in the case where a user has exclusionary permissions under the specified path. In this case, the number of rows scanned has been significantly reduced, resulting in faster performance. #252366 (Job #38831) ** The command 'p4 jobs -e "Job >= jobNNNNNN"' was mistakenly treating the >= operator as though it was =. #252228 (Job #38955, #20516) ** If 'p4 reopen -t +ko file' is used to add the +ko modifier to a file which is already marked as +k, the +ko is now ignored, and the file remains marked with filetype +k. #251611 (Job #34018) * ** On Windows platforms, it is now once again possible to specify parameters such as P4EDITOR using double quotation marks to surround the parameter value. #251384 (Job #35357) ** 'p4 annotate' did not respond properly to a user attempting to interrupt the command with ctrl-c. #251342 (Job #35562) ** When computing the set of groups to which a user belonged, the server could fail to notice an indirect group membership via a subgroup, if another group of which the user was a member happened to be the very last entry in the db.group table. Fixed. #251119 (Job #28201) * 'p4 [cmd] -i < /some/directory' would crash because the I/O error that resulted from re-directing stdin to a directory was not caught. This has been fixed. #251093 (Job #30807,32404,32405,34003) ** 'p4 fstat -T' now validates the field list more thoroughly and rejects unknown field names as errors. #250920 (Job #37475) ** When an integrate command reported 'File(s) not in client view', a memory leak was occurring, and has been fixed. #250482 (Job #30780) * ** Validation of the port number in P4PORT has been improved, and port numbers that start with a digit but contain non-numeric characters are no longer accepted. #250142, #255123 (Job #39294, #21949) ** 'p4 user -o' or 'p4 user -d' for an unknown user would fail if the license quota was full. Fixed. #249529 (Job #38785) ** A malformed date specification combined with another search expression could cause "p4 jobs -e" to crash. Fixed. #246985 (Job #26138,38051) ** Running 'p4 verify' on a compressed-binary revision file in the versioned file tree would loop forever if the binary was truncated. Fixed. #239657 (Job #38194) * 'p4 replicate -k' would not terminate if the subprocess terminates abnormally. Fixed. -------------------------------------------------------------------------- Important note: Please refer to: http://www.perforce.com/perforce/r10.1/user/relnotes.txt to get up to date GA and post-GA information about this release. -------------------------------------------------------------------------- Major new functionality in 2010.1 #235471 (Job #1400) ** The new 'p4 grep' command enables users to search through a revision range of archived text files on the server. Regular expressions, case-insensitive and inverse search are supported. See 'p4 help grep' for more information. Minor new functionality in 2010.1 #243979 (Job #994) ** A new flag '-d' for 'p4 add' now allows the user to downgrade some open file actions which previously would require a revert. This flag can be used if a file is opened for 'edit' and synced to a (deleted) head revision or for a file that is opened for 'move/add'. See 'p4 help add' for more information. #242851 ** Per change 227535, the error message on attempting to submit a deleted file that is open for edit will now suggest "sync & add" as a possible solution. #241134 * ** Perforce clients, servers, and proxies will attempt to increase TCP send and receive buffers to 64Kbytes if those buffers are less than that amount. This can improve network performance on high latency networks. #236504 ** 'p4 export -r' command to report journal records will now report the table name of a record if the record is a database table record and the '-F' filter option will now work with these raw journal export records. #236044 (Job #3440, #37905) ** A new system counter 'minClient' may be set to a release number which the server will enforce as a minimum client version to work with. If set, another counter, 'minClientMessage' may also be set to supply a message to the client regarding how to get newer clients. The server must be restarted after changing these counters. #235925 ** A new flag '-S' for 'p4 sizes' reports size information for files that have been shelved. See 'p4 help sizes' for more information. #235755 (Job #37597) ** The server may be operated with the -C1 option to force the server to operate in case insensitive mode on a normally case sensitive platform. #235393 (Job #34869) ** String case handling of a p4d server is now specified in the output of 'p4 info' #235026 (Job #36327) * ** A new flag '-f' for 'p4 move' allows the user to force a move to a file already synced to the client workspace. One use of this command is the ability to move and resolve a file that is opened for edit but has been renamed at the head revision. #233651 (Job #2319) ** Atomic update of counters. A new flag '-i' for 'p4 counter' increments the supplied counter by 1 and returns the new value. #232628 (Job #35860) * PKZIP and Java archives are now detected as compressed binary files and added to the server by default as ubinary meaning they are not compressed by Perforce. #230242 (Job #23422) * ** Perforce clients running on (windows) NTFS filesytems can suffer from performance problems due to fragmentation. This change pre-allocates space for files larger than 32K. #227793 ** The performance of 'p4 unshelve' has been improved by batching its updates to benefit from the internal cache and a reduction in lock requests. #225620 ** New triggers are available for use with shelving files. The 'shelve-submit' trigger is similar to 'change-submit', but trigger failure prevents shelving. The 'shelve-commit' trigger operates similarly to 'change-commit'. Finally, the 'shelve-delete' trigger can be used to prevent shelved file deletion. Please see 'p4 help triggers' for more information. Bugs fixed in 2010.1 #282873 (Job #42997) ** On 32-bit Windows, a bug with the heap manager could result with memory allocation problems that could lead to a server crash. This has been fixed. #276388 (Job #41364) ** Resolves between 'text' and 'symlink' files will now be treated as 'binary' (at/ay) by default. #264737 (Job #40395 and #40396) * Change #258714 introduced a regression that caused the client spec option 'rmdir' to not delete directories on Windows. This change resolves that problem. #264094 (Job #40089) ** The p4d server on SOLARIS10 suffers from poor concurrency due to changes in the way that the file locking system call fcntl() has been changed. Unlike other platforms, SOLARIS does not allow shared access to files if an exclusive lock is waiting. This change fixes the problem by using region level locks for each reader and should provide improved concurrency. #258714 (Job #12200) * RmDir operation (invoked by client rmdir option) will delete junction points, causing undesirable side effects, including deleting files unexpectedly. #257930 (Job #39886) ** Multiple simultaneous grep commands could cause server instability. #256855 (Job #39815) ** Problems with the TCP connection would be reported if the proxy (or configurable broker) was in use and a TCP forwarder (or older proxy) is between the client and that proxy. Fixed. #248446 (Job #34305) ** 'p4 changes -s pending @change' would result in a 'no read lock' error message. This command now works correctly. #248320 (Job #39200) * When a file created in winter (during standard time) is added in summer (during DST), using a Windows platform for the client, the modification timestamp on the file is incorrectly computed. This has been fixed. #248131 (Job #39140) ** 'p4 diff @=' could fail to find the files to diff if files were opened outside of the shelved change under certain circumstances. This has been fixed. #248086 (Job #37881) ** 'p4 diff -f' did not handle moved files correctly, it would diff the target of the move against the wrong depot file, this has been fixed. #246764 (Job #38800) ** 'p4 shelve' now requires open access rather than write access. #246502 (Job #38992) ** 'p4 change -f' was erroneously changed in 2009.2 to disallow changing the 'user' to a non-existent user. This has been fixed. #244697 (Job #38850, #38915) ** 'p4 revert' will now allow users to revert a file opened for move/delete even if its move/add partner isn't open in the user's client. #244448 (Job #36927) ** Submission of a changelist in which one or more modified files failed to be transferred to the server could improperly complete (rather than being aborted) if an unchanged file in the same changelist was reverted or excluded due to the use of the revertunchanged or leaveunchanged client submitoptions. #244379 (Job #36875) ** 'p4 tag' command would not save forms to the spec depot, this has been fixed. #243724 (Job #38117, #38813) ** Issuing 'p4 unshelve' with ktext files resulted in $Change$, $Date, and $DateTime expanding to values from the shelved revisions rather than the depot revisions, causing spurious diffs based only on expanded keywords. This has been fixed. #243445 (Job #38776) ** 'p4d -jrc' used with 'p4 replicate' or 'p4jtail' would stall the last transaction until the next transaction starts. If interrupted during this stall the last transaction would be lost. Fixed. #243220 (Job #37618) ** The 'p4 describe -S' command would fail if a shelved file was deleted at the head revision. This has been fixed to perform the describe, list the files, but skip printing impossible diffs. #243221 (Job #38349)) ** p4 diff -du gives errors when run against files open for move. This has been fixed. #243165 (Job #38286) ** 'p4 annotate -i' could take a long time if the branched files being followed stepped into protected namespace. this has been fixed. #243180 (Job #37720, #38349, #37689) ** p4 diff -du does not run against files open for integrate, but not yet resolved. Also fixes 'p4 diff -du -f' against unopened/all files. #243163 (Job #38350) ** p4 diff -du gives wrong output when diffing shelved files open for add. This has been fixed. #242670 (Job #16782) * On Windows platforms, when using the 'modtime' client option or the +m filetype modifier to cause sync'd files to have their last-modified date set to the last-modified date from the revision on the server, the date could sometimes be off by an hour. Specifically, if the last-modified date was during standard time, and the Windows machine is now observing daylight saving time, or vice versa, an erroneous time zone adjustment was performed. This has now been fixed. #242130 (Job #37007) ** When sorting output with 'p4 fstat -Sd' added files would not be consistently ordered if the command was run at exactly the same time (in seconds) as some of the other files were submitted. This change considers that newly added files are not part of the existing repository and hence do not have a submitted date to order on, they will always appear first in the sorted output list. #242074 (Job #38596) ** When 'p4 replicate' or 'p4 export' was invoked to export the current journal file against a server which is running with journaling disabled, the server would crash. This has been fixed. #242015 (Job #37481) ** When the job counter exceeded ten million, a server error would occur trying to create the next job. This has been fixed, and the job counter can now go up to 2,147,483,647. #241872 (Job #37934) ** When multiple triggers were fired by a single operation, if the second trigger's command line length was exactly 1 character longer than the first trigger's command line, the second trigger's final argument was not properly null terminated. This has been fixed. #241218 (Job #38024) ** Obliterating a deleted revision from a spec depot was issuing a warning about a non-existent RCS file in the archive. This warning was incorrect and has been fixed so it no longer appears. #241181 (Job #37822) ** The usage message displayed by 'p4 protects' when an invalid command line switch is passed was missing the '-g' option. This has been fixed. #241038 (Job #36180) ** 'p4 fstat -F' gets wrong results when the filtering value began with a number, but was actually a string value. The filter was mistakenly performing numeric comparisons using only the numeric prefix of the string, rather than string comparisons using the entire string. For example, the filter '-Ol -F "digest=9"' would display all files with a digest starting with a 9. #240993 (Job #38507) * ** 'p4 replicate' may produce duplicate journal records as output or to a subprocess if a server transaction exceeds the poll time interval ('-i' option) of the replicate command. Fixed. #240721 (Job #36004,#38389) ** When server command tracing is set to level server=2 or higher, 'p4 -Ztag counter' and 'p4 -G counter' commands were logging the counter's value as an extra line of command completion trace output. This has been fixed. #240699 (Job #36135) ** When a single change fires both the fix-add and fix-delete triggers, the value of the %jobs% variable for the fix-add trigger now correctly contains the added jobs, not the deleted jobs. #238565 (Job #38103) ** Under certain conditions 'p4 login' could issue a ticket to a user with a weak password even if the server security level required strong passwords. In that event, the user had a ticket, but could still not issue any commands. Now a ticket will not be issued unless the password strength is sufficient. #238346 (Job #37870) ** Users will receive a warning message when shelving a file opened for edit with exclusive open (+l). #238025 (Job #37815) ** Password strength could be computed incorrectly in certain circumstances when server security level is less than 2. This has been fixed. #237764 (Job #37836) ** In some cases strong passwords were not being enforced correctly when using command line arguments. This has been fixed. #237028 (Job #37630) ** 'p4 group' will no longer save a completely empty group. #236158 (Job #19844) ** This change delays a reverse DNS lookup for the trigger variable 'clienthost' until it's actually needed. #235848 (Job #37543) ** 'p4 diff @= will now show diffs for files which have been opened for add and shelved against their corresponding file(s) in the client workspace. #235845 (Job #37882) ** 'p4 diff @= would show incorrect results if the change contained files which were moved. This has been fixed. #233698 (Job #12574) ** 'p4 integ' with no rev range specified could pick a non-existent base revision when the first revision of the source file had been obliterated, leading to a 'missing from rev table' error on resolve. This situation will now be treated as a baseless integrate, using the first available revision as a base. #233519 (Job #29969) ** 'p4 sync' to a path that has been excluded from the workspace yielded a "protected namespace" error instead of a "file(s) not in client view" error. This has been fixed. #232867 (Job #37121) ** 'p4 info' command run against a p4d server on a Windows machine whose timezone name includes non-ascii characters would show a server date with the timezone corrupted. Now, any non-ascii characters will prevent the timezone from being displayed. #232454 (Job #1870) * ** 'p4 diff2 -q' would report the confusing message "No file(s) to diff" if the files were identical. Now it will report "No differing files" instead. Users requiring the old behavior for scripts or applications can set the protocol variable 'api' to a pre 2010.1 value, such as 'p4 -Zapi=66 '. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2009.2 #215740 * ** This release brings together two commands which provide core infrastructure required for replication. These commands are administrative only and should not be used without reading and understanding the available documentation. 'p4 export' (first introduced in 2009.1) is now a fully supported command for extracting checkpoint and journal meta-data out of a Perforce repository. See 'p4 help export' for more information. 'p4 replicate' is a new command built into the command line client that polls for new journal entries from a server and allows them to be played into a replicating repository. See 'p4 help replicate' for more information. Please see the Perforce System Administrator's Guide for more details on replication functionality and usage. #208746 (Job #15043) ** Two new commands, 'p4 shelve' and 'p4 unshelve', enable developers to store and retrieve files on the Perforce server without submitting them. These commands make multi-tasking, code sharing, testing and review much easier and more practical. Users gain access to shelved files and their content through the following commands: 'p4 describe -S change#' displays files that are shelved for the specified change (along with any diffs). 'p4 changes -s shelved' limits the output of the command to only those changes that have shelved files. 'p4 fstat -e change# -Rs' displays file information for those files shelved at the specified change. 'p4 diff/diff2/files/print' have access to shelved files through the '@=change' revision specification, where 'change' is the pending changelist number. See 'p4 help shelve/unshelve' for more information. Minor new functionality in 2009.2 #220795 ** 'p4 dbschema' (first introduced in 2009.1) is now a fully supported command that reports database schema information. See 'p4 help dbschema' for more information. #216422 ** The variable %changeroot% is now available to change-commit triggers, its value being the root path of submitted files. #215113 (Job #34319) ** The access time updates on users and domains/clients are now tunable. #214910 (Job #35399) * A password specified on the command line might be visible in a list of processes (ps). To reduce this possibility, add logic to obscure memory. #214697 (Job #35363) ** Deleting a user with 'p4 user -d' now checks for open files in a separate transaction. This approach improves concurrency by reducing lock duration for the other tables. #213147 (Job #35353, #35354) ** 'p4 filelog' has two new flags. The '-s' flag returns a shortened form of output. The '-c changelist#' flag restricts output to files submitted at the given changelist. See 'p4 help filelog' for details. #209865 (Job #35224) * P4PORT=rsh: can now handle quoting of spaces on UNIX. Use double quotes. For example, the P4CONFIG file can contain: P4PORT=rsh:p4d -r "root directory" and "root directory" is recognized as a single argument (without the quotes). A " can be specified by using "". Note that, on Windows, the whole string (after the rsh:) is passed to cmd.exe for handling, and must obey cmd.exe's quoting rules. #205590 (Job #33826) ** 'p4 edit' and 'p4 move' now accept a '-k' flag, which updates the server so that it appears that a client workspace already has the file(s) requested. Using this flag prevents files from being synced to the client workspace. #205204 ** 'p4 change' now permits the owner of a pending changelist to modify the User field of a pending changelist, if the changelist is empty. #203942 (Job #32494) ** The client/server network connection handling has been adjusted to prevent it from hanging. The server logic has been changed so that it complements TCP's send/receive buffers with buffers of its own and uses polling to buffer what TCP won't. With this change, the server's "himark limit" can be set arbitrarily high. #203415 (Job #34227) ** Modify the fstat filter option to support wildcard comparisons for text fields. #201673 ** Two database tables, db.boddate and db.ixdate, have been combined into two other tables, db.bodtext and db.ixtext, to improve access times for jobs. #199579 ** New data type for jobspec fields: bulk. 'bulk' is like 'text' but the field contents are not indexed for searching by 'p4 jobs -e'. #199599 ** Updates of the last access time for a client/label/user now happens only when those tables are free to be updated. If no update has happened for over an hour, the update is forced (the command waits for the lock). Bugs fixed in 2009.2 #260664 (Job #40045) ** 'p4 describe -s' was taking an unnecessary shared lock out on the db.integed table. #255952 (Job #39742) ** A performance change has been made to reduce the number of times that the db.monitor table is read when monitoring is in effect. #247496 (Job #39061) ** 'p4 unshelve' could fail to unshelve moved files if the files were mapped differently on the user's client workspace than the shelver's client workspace. This has been fixed. #245854 (Job #038771) ** In rare cases traversing a large db.archmap table may cause a stack overflow. This problem has been corrected. #244299 (Job #038062) ** The Server's Smart Heap memory manager retained free memory in an internal heap free list. Capped the level of free list memory retention to 4 Gbytes. (Windows x64, Linux 2.6) #244254 (Job #37717 ) ** 'p4 change -f -s' would fail to allow a super user to change the user of an empty pending change if there were opened files in the client's default change. This has been fixed. #241894 (Job #38580) ** A jobview filter that specified date-field > date-value would incorrectly return jobs where the date-field was exactly equal to the date-value (that is, the > was processed as >=). This has been fixed. #237368 (Job #37964) ** Several password and security bugs that required manipulating the protocol stream have been fixed. #237994 (Job #37073,#22531,#29638) ** Under certain conditions a user with admin privilege could set a weak password for another user on a system with level 2 security. This has been fixed. #236925 (Job #37956) ** The server could crash when a table containing an invalid permission was being parsed to create a spec. Fixed. #235183 (Job #37752) * Users could still erroneously submit unicode type files to a non-unicode enabled server by locking the files (via 'p4 lock') prior to submitting them. Now this scenario will cause the submit to fail as it should. #232016 (Job #37534) * Changes to the client/server network connection handling did not check for certain error conditions on windows. An application could fail with the message 'WSAEWOULDBLOCK'. #231847 (Job #37464) * Allowing the P4CONFIG file to contain tunable values caused a regression on case insensitive clients (windows). Any variables in configuration files that did not exactly match the case as documented would be ignored. #231272 (Job #37395) ** 'p4 diff -du' would diff files that had been deleted from a client workspace even if they were not opened. #230553 (Job #37173) * 'p4 replicate' when run against a Unicode mode server would translate journal records into the P4CHARSET specified character set which should not happen because those records are expected to be in UTF 8 when loaded into a replica server. 'p4 replicate' will now not translate those journal records when in Unicode mode. #230416 (Job #37377) ** Users were removed from groups during upgrade to 2009.2 if the group db records were in 2007.2 db record format. This has been fixed. #229997 (Job #37318) * ** p4 export and p4 replicate did not properly handle journal file positions > 2Gbytes. Fixed. #229380 (Job #37147) * Significant delays occur on Windows 64 bit platforms when using PowerShell with a current directory of a remote mount point. Fixed. #229048 (Job #37229) ** 'p4 shelve' could get confused if during its operation a concurrent revert of the same data is executed. Now the the shelve command issues a warning message and terminates. #228752 (Job #37144) ** 'p4 filelog -c' would incorrectly display all revision history rather than starting with the revision created by the changelist for each file submitted. #227737 (Job #37083) ** 'p4 export -r' would not properly return large trait journal records. Extra newlines were added which would prevent journal recover from working. 'p4 replicate' was affected by this also. Fixed. #227563 (Job #36959) ** 'p4 diff -du' in some cases, where files from the workspace were deleted through the OS, would segmentation fault.. #225273 (Job #36644) ** 'p4 job' would allow saving a job with a required field of type 'line' even if the field had not been set. This has been fixed to fail to save the job in this situation. #223167 (Job #32018, #33885) ** 'p4 integ' could produce non-optimal results when processing a branch view and a protection table that have many embedded wildcards. Typically this manifests itself by ignoring previous integration history and files that are synced on the client. This condition is now correctly detected and an error message output to the user. #222817 (Job #32962) ** Some complex client views, when combined with other internally generated views create a map with more than 10 wild card combinations. These may crash the server, or fail to match filepaths when they should. This change detects the overflow and returns an error. #222762 (Job #36460) ** Commands logged by a unicode mode server into the log file with long argument lists would elude the argument list, but that did not understand multi-byte characters and would corrupt characters around the eluded bytes. Fixed. #222207 (Job #36364) ** Editing of a job would fail if the job contains a read-only timestamp within the repeated hour of the Fall time change. #222099 (Job #35887) ** p4d could crash if an archive rcs file was missing a final '@'. Fixed. #221032 (Job #34579) * p4 set command would not always find configuration files if the P4CHARSET is set to shiftjis and certain characters are in the current directory path. #219888 (Job #28251) ** Utf16 files submitted by clients older than 2007.2 could be wrongly stored on the server. These old clients are no longer permitted to submit utf16 files. #219031 (Job #34607) * On Windows platforms, files with unicode characters in their names are not created with their correct names if the P4CHARSET is set to a unicode charset other than utf8. Fixed. #218555 (Job #19487) ** The server consistency checker 'p4d -xx' would report missing spec and remote depot entries during the 'db.have vs db.rev' check. This fix ignores db.have entries that originate from spec or remote depots. #217700 (Job #24167) ** 'p4 obliterate' of a spec depot file would not remove the archive file content. Fixed. #217455 (Job #35714) ** 'p4 submit' of a ktext file through a proxy when the ktext file was integrated from another file which is not in the proxy's cache would cause the refresh of submitted keyword expanded files to fail with an Illegal operation error. The submit would succeed but a subsequent sync would be needed to update keyword expanded files. Fixed. #217426 (Job #13033) ** On a non-unicode enabled server, the 'unicode' file type is not supported. As from 2009.2, users can no longer submit 'unicode' files. Therefore the file type must be changed to 'text' before submission. (Prior to this change unicode files were treated the same as text when the server was non-unicode anyway). #213786 (Job #35361) ** The 'p4 changes' command now completes if the number of changes is greater than the setting for maxscanrows. The maxscanrows check has been disabled for the db.change table on this command when no filepath is specified. Excessive scanning of other tables is still enforced, however. #213783 (Job #35349) * ** *** Too many flag arguments to a command can no longer cause a server or client crash. Now limited to 20 flag arguments. #207848 (Job #34239) ** The 'p4 group/change/depot/license' commands no longer crash the server if a custom field has been added to the top of a spec definition (using the undocumented "p4 spec" command). #202956 (Job #308, #14219, #14859, #18403) ** The 'p4 diff' command flag '-du' (unified diff output) now produces diff files that are compatible with patch. This fix changes the diff output to be compatible with patch; adds correct handling of lines that don't with a newline; and improves handling of added and deleted files. Note: patch generally lacks features to create or delete files, so this fix only empties files, it does not delete them. #199648 (Job #33644) The 'p4 fstat' flag '-mN' is now compatible with the "-F " flag, and no longer returns too few results. #199356 (Job #23215, #28804, #32354, #33268) ** 'p4 group' now allows a member name to be used for more than one type in a group. Previously, the same member name could only be specified as either a subgroup, owner, or user. Also, an owner was also automatically made a user member of the group. Now the same name can be used in any combination of user, owner and/or subgroup. Also, a group owner must be explicitly made a member by adding the name to the Users field. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2009.1 #177023 * ** The new 'p4 move' command allows for better support for renaming files. A file must be already opened for 'edit' or 'add' in order to be moved. Moved files can be synced, resolved and diffed against the repository just like files opened for 'edit'. See 'p4 help move' for more info. Minor new functionality in 2009.1 #205042 (Job #25229) ** Password strength checking was not done for unicode mode servers. With 2009.1 this checking is performed. Passwords will still need a roman letter in addition to unicode characters, that is they can not be purely non-roman letters. #205034 (Job #31826) ** Most metadata tables will now have 50% more pages cached by default. #195179 (Job #1141, #13396, #17288) ** Support for external archive access with new 'archive' trigger and new +X filetype modifier. For files with the +X storage modifier, the server will now run a command defined with the 'p4 triggers' command to access the file's content in the server archive. Note that this new functionality partially addresses the above mentioned bugs but not completely. The Perforce proxy does not cache +X type files: they are always delivered from the server. #194895 ** Multiple fix, form, or auth triggers with the same name will now all be run. Previously, only the first would be run. That was consistent with change triggers, but an unneeded restriction. #193862 (Job #25041) ** Change p4 delete to allow 'virtual delete' -- deletion of files in the depot without first syncing them into the client workspace. Implemented with a new flag, -v. #191989 (Job #27021) ** The new 'p4 logtail' command returns error log data to the client with an offset value for getting updates. See 'p4 help logtail' for more information. #191795 (Job #18774, #27387) ** The limit on RCS files of 1.5GB has been lifted, and p4d now supports arbitrarily large RCS files on server platforms that support 64 bit file sizes (most all nowadays). Further, the limitation of 50M lines on any single revision has also been lifted. RCS files are used by p4d to store text files revisions. It is still a better idea to treat very large text files as type 'ctype' (so that they are stored as compressed text files on the server), but the regular text type may now be used for any size file -- it may just be slower than ctext to access a large RCS archive. #191373 ** p4d journal commands such as 'p4d -jr' will now honor the -q flag to suppress messages. #190670 ** Commands with no revision specifier (head revision only) will see an improvement in the compute phase time. By reducing the amount of internal record copying lock times of certain commands have been reduced as much as 10%. #190515 ** 'p4 submit' now batches database updates during the transfer phase. This change improves concurrency by reducing the number of lock requests. #190322 ** 'p4 edit', 'p4 integ' and 'p4 revert' updates to database tables have been improved by dynamically changing the batch size. Previously the number of rows updated was fixed at 100. In this release the update batch size is adaptively increased when the database tables are busy. #189833 ** The performance of 'p4 edit' has been improved by batching its updates to benefit from the internal cache and a reduction in lock requests. #189522 (Job #32565) ** Modify fstat to report adds by other users when two users have the same depot path open for add at the same time. Prior to this change only 'p4 opened' reports this. Now fstat generates a similar message. #186609 ** 'p4 filelog' will automatically follow the history of files that were renamed with the new 'p4 move' command. #183505 (Job #6603) ** A new flag '-u user' for 'p4 opened' restricts the output to files opened by the specified user. #175099 (Job #21832) ** A new option '-z' for 'p4 verify' allows the user to choose to skip verifying any duplicate archive files for that command. Note that the output may report a lazy copy revision if it happens to be the first revision in the sort order to access a common archive file. That may be confusing, but it's correct behavior. #166067 (Job #30784) ** A new flag '-T fields' for 'p4 fstat' allows the user to choose which fields are included in the fstat output. See 'p4 help fstat' for more info. #174443 (Job #31190) ** A new flag '-t' for 'p4 labels' allows the user to choose to output the date and time of the label instead of just the date. Bugs fixed in 2009.1 #247476 (Job #34562,#36123) ** Recovering from a journal which was truncated, or which was unreadable due to I/O errors, could result in a crash instead of an error message describing the journal file problem. Fixed. #216895 (Job #35295) ** 'p4 revert' of a moved file could sometimes leave the client with the 'move/delete' half of the rename. Fixed. #212299 ** A 'change-commit' trigger could be erroneously fired during submit even though the target file had been reverted. This would only happen if the files were submitted with the option 'revertUnchanged'. (Job #34819). #208500 (Job #34730) ** The Perforce Server on Linux (32-bit) would fail to start or log errors if a database file exceeded 2 Gbytes. This platform has been fixed to correctly support large files. #205435 (Job #32494) ** On certain platforms (Linux, Solaris), the client/server connection could hang due to deadlock. This change lowers the 'himark' (buffer value) to prevent this. #205388 (Job #34466) ** 'p4 filelog -m -i' was inconsistent in its output, this has been fixed. Previous versions would define 'maxRevs' on revisions of files output rather than the files specified on the file[rev] argument. Users requiring the old behaviour for scripts or applications can set the protocol variable 'api' to a pre 2009.1 value for example -Zapi=64. #205051 (Job #32792) ** p4 resolve would report incorrect keyword differences if either the base or theirs files were ktext files which were branched from text files which had expanded keyword fields as their original text forms. Fixed by explicitly removing keyword expansion from ktext base and theirs files during resolve. #200645 (Job #33896) * Tagged output (or other than C++ apis) from 'p4 jobs' against a unicode server with user defined fields which are not translatable into the P4CHARSET could crash the p4 command line or other p4 api programs. #200638 (Job #33983) * p4 set would not allow the P4CHARSET variable to be cleared on Windows platforms. It could be set to 'none' however. Fixed. #199805 (Job #32202) ** The fstat filter flag '-F' operators '<' and '<=' were reversed in their operation behavior, this has been fixed. #199277 (Job #33645) ** The fstat flag '-r' (reverse order) would not reverse output when used with the '-Sr' (sort by revision). This has been fixed. #192904 (Job #32200) ** 'p4 obliterate' was not providing accurate journal information for non-key record data. Although this doesn't break journal replay, it has been fixed for improved accuracy and diagnostic benefits. #192695 (Job #14789) ** 'p4 info' now reports the server IP address from the license file if it is available. #188592 (Job #28540) * ** 'p4 add' upon detecting a text file assigns the filetype 'text'. This is not optimal for large files. The default will change to 'ctext' if the added file is greater than 10MB. #188212 (Job #28268) * Undocumented 'p4d -jds' crash fixed. This operation is still not meant for regular production use. #168530 (Job #6390, #31344) * 'p4 revert' would fail to revert a file if the type changed from symlink to text (or visa versa) and the contents remained unchanged. #186041 (Job #32335) * 'p4 -R' would crash when reading strings with lengths in the ranges: 128-255, 32768-65535. This has been fixed. #182939 (Job #31755) * The 'p4' command would search for a P4CONFIG file from the real current directory prior to the directory specified with the '-d' option which could cause automounter problems. Fixed. #176992 (Job #31375) ** 'p4 obliterate -y' would fail to purge a revision immediately prior to a deleted revision as a result of a bug introduced in 2008.1. This has been fixed. #172617 (Job #31503) ** The server could crash if the db.trigger table was locked when accessed. This could happen if, for instance, the files were opened by anti-virus programs examining them. Fixed. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2008.2 Support for Zeroconf (service registration and discovery) * ** *** Perforce servers can now register their service using multicast DNS. The service type for the server and proxy is '_p4._tcp'. By registering a human-readable name as a service it is possible to browse for perforce servers using standard DNS service discovery utilities. example register % p4d -0 -In "artists store" -p 4211 -r /usr/dep/art example browse (using bonjour dns-sd utility) % dns-sd -B _p4._tcp Timestamp A/R Flags if Domain Service Type Instance Name 15:00:03.330 Add 3 4 local. _p4._tcp. graphics-dev 15:00:03.330 Add 3 4 local. _p4._tcp. code-dev The perforce command line also has a built-in browse command 'p4 browse'. To establish a connection to the server using the human readable name, simply use it where you would usually specify P4PORT. example connect % p4 -p "artists store" info Although this works seamlessly on Mac OSX most platforms will require some software installation or configuration to make use of this new feature. Note on linux and freebsd perforce dynamically loads the avahi implementation for zeroconf services rather than apple's bonjour implementation. Registration is available also with p4p, p4ftp and p4web. Note: Authentication will not succeed through any process that sits between the client and the server. This restriction is required to prevent unauthorized server access. (consequently registering p4p is generally of little use). This restriction is also true when trying to connect to old 2007.3 servers, since they do not have the extra security protocol support. Minor new functionality in 2008.2 #165397 (Job #30393) * ** 'p4 -z tag', which produces 'tagged' output like 'p4 fstat' is now supported. It has long been present but undocumented. #163750 (Job #29931) ** 'p4 admin' has new command options to report the sizes of the db tables, journal and log files. 'p4 admin dbstat -s' reports the sizes of the db tables. 'p4 admin logstat' reports the sizes of the journal, error log (if it exists), and audit log (if it exists). #163087 (Job #8941) ** 'p4 changes @change,@change' and 'p4 changes @datetime,@datetime' have been sped up by using the db.change table directly. Apart from generally being much faster, commands with this syntax will also report changes that have no files attached due to obliteration. #161413 (Job #29930) ** 'p4 sizes' has a new flag (-z) which will ignore lazy copies when summing up the file sizes for a path. #159758 (Job #26621) ** A new flag '-F filter' for 'p4 fstat' allows the user to limit the output to files satisfying the expression given as 'filter'. See 'p4 help fstat' for more info. #156356 ** 'p4 sync' locking has been changed to improve concurrency during very long compute cycles. The new algorithm allows for early release of locks on the db.have table. The combination of this change and #155509 should result in less demand for the lock on the db.have table. #155509 ** 'p4 sync' updates to the db.have table have been improved by dynamically changing the batch size. Previously the number of rows updated was fixed at 100. In this release the update batch size is adaptively increased when the db.have table is busy. Bugs fixed in 2008.2 #189734 (Job #32494) ** The new tcp buffer calculation could cause a deadlock in client/server communications. This problem was only detected on configurations involving Solaris or Linux. Due to the complications of platform specific tcp implementations the algorithm has been reworked to make allowances for certain eccentricities. #188676 (Job #32384) * 'p4 resolve' using the automatic option could crash the client application when running on windows. This would only happen if the 'theirs' file had been locked by another windows application e.g. microsoft word. #188603 (Job #31933) ** A user with a complicated view map could crash the server by creating a spec using '-i' or editing a spec to use a name which contains '%%'. This has been fixed. #187408 (Job #32247) ** 'p4 opened -C' with a non existent client spec causes the server instance to terminate abnormally. Fixed. #185697 (Job #32178) * 'p4 browse' could return an invalid error message when no Perforce services were available. #185416 (Job #32266) * Setting P4CHARSET via 'p4 set' on Windows platforms to an invalid value could not be reset to a correct value. Fixed and P4CHARSET setting restricted to legal values. #185329 (Job #32255) ** Submitting a keyword expanded file (+k) which was integrated to and resolved with an ignore (-ay) might falsely trigger the tamper check reporting and fail to submit. Fixed. #185198 (Job #32138) * 'p4 login', and 'p4 passwd' did not work on AS/400 and MVS due to problems in ASCII/EBCDIC conversion. This problem has been corrected. #187080 (Job #31946, #32428) * ** 'p4 admin dbstat -s' and 'p4 admin logstat' could report negative file size when the file size exceeds 2GB. This has been fixed. #184476 (Job #31737) ** Excessive wildcard use in client views could crash the ntx64/p4d server under circumstances that would be handled correctly by the ntx86/p4d server. It was discovered that the 64-bit version of the windows server requires more stack space to perform commands involving excessive wildcard usage in client mappings. This has been resolved so that the ntx6/p4d process behaves similarly to the ntx86/p4d. #181214 (Job #31771) ** 'p4 fstat -F' with a filter that contains a not (^) crashes the Perforce server. This has been fixed. #183252 (Job #31952) ** A failure to open a temporary file during submit of a compressed file could lead to a server crash. This problem could occur on a windows server only. Fixed. #168149 (Job #30403) ** 'p4 admin updatespecdepot' had a memory leak. This has been fixed. #167560 (Job #30910) * ** 'p4 resolve' run interactively with 'accept theirs' after a 'p4 integrate -t' which will change the target file type from symlink into something else did not record the new file type properly such that a following 'p4 integrate -f -t' followed by 'p4 resolve' would produce an error. Fixed. If an old client is used with a new server in this case, the resolved file will be left read-write when it should be read-only, using a new client prevents this. #166870 (Job #30750) ** 'p4 annotate -i' using a revision range erroneously applied that range to the source as well as the target. Now the range is correctly only applied to the target, and the data originating from the source will now be credited from all of its revisions. #165299 (Job #18774) ** The 1.5GB maximum size for an RCS checkin has now been imposed on non memory-mapped I/O available systems. Some 64-bit platforms could exceed the maximum which would make file archives incompatible. #165270 (Job #30647) * 'p4 sync -f' would fail to update the db.have table correctly if a previous refreshed file had encountered an error. This has been fixed. #165134 (Job #30569) ** 'p4 submit -t' would still submit a changelist even though one of the files had been tampered with and reported to the user. This has been fixed. #164667 (Job #26025) * 'p4 tickets' would report garbage characters if p4v was used to login via a ticket and the server is in unicode mode with a P4CHARSET not utf8. This fix causes the user name in the ticket file to always be stored in utf8 and translated as needed to P4CHARSET. Ticket entries from old clients may no longer be compatible as they may have been stored with other character encodings than utf8. When a character in the ticket file can not be translated it will now appear as '?'. #164511 (Job #30640) ** 'p4 diff -sb' could sometimes return a confusing error: "Can't find in depot map", this has been fixed. #164280 (Job #29205) ** Multiple integrations and resolves where an earlier resolve required an edit and the later resolve(s) were 'accept yours' could falsely trigger a tamper check error. Fixed. #164153 (Job #30136) ** 'p4 edit -t ' was not changing the mode of the file immediately as it had in 2007.2 and earlier. Fixed. #163731 (Job #29609) ** 'p4 annotate' using a revision range scanned the db.rev table beyond the file being annotated. This has been fixed. #163482 (Job #15660) ** The Spec depot now handles spec names with characters in them that are illegal characters in the spec depot filesystem. For example ':' is a legal character for a client workspace name but is an illegal character on a windows filesystem. #163028 (Job #29993) ** Tagged output for 'p4 counter' did not report the value of the counter being set. This has been fixed. #162617 (Job #30352) ** Tagged output for 'p4 groups -v' caused a memory leak. This has been fixed. #162324 (Job #30404) ** 'p4 admin lockstat' caused a small memory leak. This has been fixed. #161719 (Job #30247) * 'p4 login user' against a unicode enabled server would overwrite the originating users ticket rather than generating a new ticket for the supplied user. This has been fixed. #161285 (Job #30304) ** The metadata btrees may lose track of a free page when a row delete causes several levels of btree nodes to be freed. This is very rare and does not damage the data stored in the btree file. Fixed. #159549 (Job #29916) ** 'p4 info' using tagged protocol now reports the client's current working directory. #158730 (Job #29951) * 'p4 login' could create multiple ticket entries in the Perforce ticket file for the same user. This would happen when executing multiple logins (mixed case username) against a case insensitive server (windows). Fixed. #157167 (Job #10490) ** 'p4 labelsync' and 'p4 tag' now only require 'list' permission. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2008.1 Performance improvements - #135973, #149641, #148921 ** 1) Server Lock acquisition The algorithm to lock database tables has been changed to prevent wedging. Some commands, for example 'p4 client -d' need to writelock a large group of tables. Previous server versions acquired locks in a blocking fashion. This new algorithm will release previously acquired locks if another command is holding onto a lock which would cause it to block. After a third attempt to acquire the necessary locks in this fashion fails, the command will fallback to a blocking mode. 2) Connection protocol * *** TCP connections between Perforce processes; clients, proxies and servers, now discover network buffering levels and make better use of that buffer space. Performance should be improved especially for long proxy to server connections. 3) Proxy compression (Job #16398, #28490) *** Uncompress of binary files can be done on the client instead of the server when the proxy is in use. Both the server and new proxy are required. Command improvements - #138839, #145664, #144624, #149074 (Job #9314, #28223, #26563, #27706, #28452) ** 1) 'p4 fstat' 'p4 fstat' has been optimized to reduce memory allocation and improve performance. The result of this optimization is a 40% decrease in memory usage and a 30% speedup of the compute phase. 2) 'p4 changes' 'p4 changes -m max ' optimization has been improved for this release. Performance of this command is now less dependent on filepath depth or number of changes specified. The new algorithm makes use of a field in the db.change table, which is calculated on submit or (for existing changes) by a 2008.1 upgrade. 3) 'p4 integrate' 'p4 integrate' has been sped up (again), markedly in cases where there is much integration history between the source and the target. 4) 'p4 obliterate' 'p4 obliterate' has been sped up, sometimes significantly, when obliterating many files in a repository with a large db.archmap table. (Tested with db.archmap with >100,000 entries.) New admin command - #137848 ** New command 'p4 admin lockstat' reports the read or write lock status for each database table. Minor new functionality in 2008.1 #152278 ** 'p4 protect' now allows specification of permission 'rights'. Previously, 'p4 protect' only allowed using permission levels which include the specified access (ie 'read') and also all of its lesser permissions (ie 'read' = 'read' + 'list'). Permission rights make it possible to deny individual rights without having to re-grant lesser rights. The new permission rights are '=read', '=branch', '=open', and '=write'. This functionality was previously undocumented, and is now fully supported for 2008.1. #151491 (Job #2362, #18057, #19935) ** 'p4 group' fields MaxScanRows, MaxResults, MaxLockTime, and Timeout now use the value 'unlimited' to specify no limit for a parameter regardless of the limits imposed by a user's other groups. The value of 'unset' is used to specify no limit, but this will be trumped by any other limit for that parameter imposed by a user's other groups. Old group specs with this server will have the values of 'unlimited' replaced with 'unset', and members of all groups should have the same behavior as before. Similarly, Timeout of '0' will be replaced with 'unset', and also '0' Timeout will no longer be allowed for this field (use 'unset'). #150806 (Job #6554) ** A new flag '-e nameFilter' for 'p4 labels/clients/branches' allows the user to limit the query using wildcards. This is very useful for sites that have a large collection of these domains. e.g. p4 labels -e "*sep*2000*" //depot/main/releases/... #146787 (Job #26473) ** 'p4 triggers' can now make triggers on 'p4 triggers'. Previously, triggers were specifically excluded to avoid trouble. If a broken trigger is installed that prevents the 'p4 triggers' command from working, the only recourse is to rename or remove the db.triggers file from the server root directory. #146678 (Job #9471) ** 'p4 jobspec' can now specify the default status for fixes created by 'p4 fix' and 'p4 change'. (It had been hardwired to "closed".) This default status is given in the jobspec's Presets value for the Status field, as an optional 2nd value preceded by the string "fix/", e.g. "Status open,fix/fixed" makes the default value for job status "open" but fix status "fixed". The fix status replaces the job status when the associated change is submitted. The new special fix status "same" leaves the existing job status in place. #146676 ** 'p4 fix' and 'p4 fixes' now report the job status associated with the fix in all cases. Previously the status was suppressed if it was the status "closed". #141168 (Job #1340) ** 'p4 info' now reports the uptime of the Perforce Server. #140525 (Job #27198) ** The performance of 'p4 revert' has been improved by batching its updates to benefit from the internal cache and a reduction in lock requests. #140369 (Job #27287) ** Change-commit triggers now use a new script variable, oldchangelist, to report the pre-commit changelist number. #138643 (Job #6096) ** Counters managed by 'p4 counter' can now be any string, not just a number. #137438 ** After a submit has completed, ktext files need to have their digest and size recalculated. Previously updates of the db.rev and db.revhx tables happened individually for each file. These updates are now batched. This change results in fewer lock requests, potentially improving the total elapsed time for submit. #139128 (Job #26301) ** 'p4 fstat' has two new flags. The '-S' flag is used to request a different sort order for output. The '-r' flag will reverse the output order. See 'p4 help fstat' for details. #134117 ** New server identification startup flags: p4d -In Specify a unique identifiable name for your server. This name is visible with 'p4 -ztag info' output. p4d -Id Specify an identifiable comment for your server. This description is visible with 'p4 -ztag info' output. Bugs fixed in 2008.1 #179182 (Job #31775) ** 'p4 sync -p' via the proxy did not transfer files which were not in the proxy's cache. Fixed. #175236 (Job #31596) ** When using the proxy, 'p4 print' of binary files without the '-o' flag would be output as compressed and possibly output twice in a row. Fixed. #174121 (Job #31547) ** 'p4 monitor' with the options '-a' or '-ae' could crash the Perforce server (on windows only). This has been fixed. #171553 (Job #29148) ** 'p4 integrate' has been modified so that changes which have been copied out of and back into the same branch will now be candidates for re-integration into other branches. This should make synchronizing branches after forced integrations easier, at the cost of scheduling extra integrations in some cases. #168144 (Job #30753) * Shell wildcard expansion on Windows can once again be disabled by double quoting arguments. #164029 (Job #30616) ** Using 'p4 -x' with many thousands of files would take longer due to an optimization that was made for the more general use of Perforce. This optimization became a penalty for single file operations. Fixed. #161164 (Job #30289) ** 'p4 admin lockstat' had a protocol error which caused p4v (and possibly other client applications) to generate incorrect results if used jointly with another command using tagged output. This has been fixed. #160022 (Job #29974) ** The new tcp buffer calculation could be too aggressive on some platforms (causing a deadlock in client/server communications). The algorithm has been tweaked to prevent this from happening. #158746 (Job #29943) ** Change #153657 introduced a regression that could cause 'p4 integ' to scan the db.integed table excessively. This has been corrected. #156864 (Job #29811) ** 'p4 integrate' of temporary files followed by 'p4 resolve -at' done multiple times with the same target file before a submit would not submit the final resolve but instead the first resolved file. Fixed. #156771 (Job #12510) ** Commas are no longer allowed as part of branch, client, depot, or label names. Existing entities containing commas in their names can still be accessed, but no new clients, branches, depots or labels can be created with commas in their names. #154569 (Job #29250) ** 'p4 user -f' or 'p4 user -f -i' would allow creation of new users with all-numeric user names. This has been fixed to work as intended, which is to disallow all-numeric user names. #153657 (Job #20413, #29176) ** 'p4 integrate' has been adjusted to detect when a revision has been integrated out and then back into the same file, and to suppress integrating the later revision into another file if the original revision has already been. #152854 (Job #28635) ** The proxy was storing revisions which were lazy copied between different local depots in multiple locations. Fixed. #149573 (Job #25380, #28412) ** 'p4 change -u' no longer requires both the username and workspace of the user to match those of the owner of the submitted change. Now only the username needs to match. #149297 (Job #22108) * 'p4 set' will now report on the P4POPTIONS variable. #149109 (Job #28605) ** Editing a client spec form with 'p4 client' can reset 'LineEnd' or 'SubmitOptions' to their default values. This problem only occurred if the 'Options' field was processed after either of the other two (usually through the api). #147069 (Job #25357) ** 'p4 obliterate' now purges archive files in numerical order rather than alphanumeric. Removing RCS revisions in the correct ascending order is much faster. #146485 (Job #13892) ** p4d will now report a non-zero exit status and a summary error message of journal files skipped due to recovering those files out of sequence. #146472 (Job #26042) * 'p4 set' on the Windows platform did not always find the right P4CONFIG file when the P4CHARSET is set to shiftjis. Fixed. #144699 (Job #27493) ** 'p4 sync' to a deleted revision using tagged protocol no longer reports a bogus file size in its summary data. #142417 (Job #452, #2061, #6339, #10563, #20914) ** 'p4 integrate' and 'p4 diff2' could produce misleading error messages when trying to explain why there was no output. The most common message was 'No target files in both client and branch view.' Now this message has been augmented with a number of more specific error messages, and the correct argument (source file or target file) is displayed with the error message. #142061 ** A user with only an unmapping access line in 'p4 protect' (e.g. 'list user * * -//...') could still cause a license to be consumed. Now such a user gets the same response ("Access for user 'xxx' has not been enabled by 'p4 protect'.") as with no access at all. #141985 (Job #26279, #23447, #22998, #18164, #16797, #13491, #26793) ** 'p4 help' for diff, diff2, describe, annotate, and resolve have been updated to clarify the usage and behavior of -d and -s diff options. The server's usage messages have also been updated. #141042 (Job #3539, #5899) ** Users may now revert their own files so long as they have at least "list" permission on the files to be reverted. Previously 'p4 revert' required at least "open" permission to revert files. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2007.3 Ability to specify group owners - (Job #1591, #9600) ** 'p4 group' has a new 'Owner' field which is used to specify users allowed to modify the group spec without SUPER permission. Owners may change or even delete a group via the new 'p4 group -a' command. Owners are members of their owned group, but with enhanced privilege to also administer the group. Performance improvements - #122007, #124181, #124726, #128272 ** 'p4 integrate' locking changes. To improve concurrency during very long complicated integrate compute cycles, database queries have been modified. The new algorithm allows for early release of locks on the db.working, db.have, db.locks and db.resolve tables. Besides a significant reduction in the time that "update" commands have to wait, the overall elapsed time for a branch has been reduced by as much as 25%. 'p4 submit' locking changes. A rewrite of the commit phase for 'p4 submit' in a previous version improved concurrency for a number of commands. This has now been extended to commands that make use of the db.counters table. For example 'p4 change' can run concurrently during the first (and longest) commit phase of a large branch submit. 'p4 sync' locking changes. Sync has been modified so that during its compute phase it is less likely to block commands that need access to the db.resolve table. This allows commands like 'p4 revert' to operate during this time. Also initial syncs or 'p4 sync -p' operations will no longer read lock the db.have table, thus allowing concurrent syncs update access to this table. 'p4 labels' locking changes. When used with a file argument 'p4 labels' attempts to cache all of the file db.rev data so that the lock on that table can be released early. Sites that have a very large number of labels and run 'p4 labels ' will no longer wedge the server, only 'p4 labelsync' commands will have to wait. Cache management change. Caching of disk pages has changed. Pages are written earlier to avoid writing too many pages together when table locks are released. This also reduces memory and cpu usage by the metadata cache system. TCP buffering change. Perforce clients, servers, and proxies will attempt to increase TCP send and receive buffers to 32Kbytes if those buffers are less than that amount. This can improve network performance on high latency networks. Minor new functionality in 2007.3 #132766 (Job #6964) ** 'p4 sync' and 'p4 integ' with large data sets and large protections tables now consume less CPU than before. #132360 ** Protections have been tidied up in a few odd cases: 'p4 dirs -H', 'p4 have', 'p4 labelsync', and 'p4 opened' now require having 'list' access. #130733 (Job #25273) ** 'p4 groups -v [group]' provides summary data for the named group, much like 'p4 users [user]'. #130372 (Job #7546) ** Trigger standard output is now passed to the client on success as well as failure. As previously, on trigger failure an error is sent to the client with the standard output embedded. Now, on trigger success a message is sent to the client with the standard output, unadorned. Previously the output was discarded on trigger success. Users can force the old behavior by setting the "api" protocol level to 61 or less with 'p4 -Zapi=61 '. #129728 ** 'p4d -jc' and 'p4d -jj' now only hold read locks on the database files, allowing read operations in the server to continue. The db.counters file is still locked, as it is updated. #129045 (Job #10866) ** *** Proxy will now cache files as they are submitted through the proxy. A new cache validation system based on MD5 signatures is being used. If a new proxy is working with an old server, the old timestamp validation is used. Recommend running "p4 verify" to assure that the p4d server has MD5 signatures computed as the proxy will not validate its cache for revisions which the p4d server does not have an MD5 signature. #127926 (Job #24825) ** 'p4 filelog' now sports a '-h' option. This option allows the user to follow 'branch from' and 'copy from' integration history. For more details see 'p4 help filelog'. #125001 (Job #21537, #24909) ** Journal rotation with 'p4d -jc' or 'p4d -jj' is now an instantaneous rename (rather than a copy) on UNIX. The -z flag (compress checkpoint/journal) still copies. #124026 (Job #3372) ** 'p4 protect' entries may now use CIDR syntax for IP address specification. For example "172.16.0.0/16" would match all IPv4 addresses which start with 172.16. You cannot combine wildcards with CIDR notation except at the start to allow proxy or no proxy matching. #129897 (Job #25366) ** 'p4 change' now allows the user to modify the client of a pending changelist, provided there are no open files. Bugs fixed in 2007.3 #159007 ** The 64-bit windows Perforce server version now handles exceptions caused by invalid parameters. This is necessary due to a change in the way that microsoft is now handling artificial C runtime faults. (Job #27279). #152382 (Job #29016) ** Sometimes 'p4 integrate' would find a distant base when cherry picking revisions to integrate. Now 'p4 integrate' insists that the base be the revision before the first revision being integrated when cherry picking revisions. #152296 (Job #28853) ** 'p4 submit' could report "No files to submit" if the combination of client mapped files and protections table exceeded an internal limit. This limit was incorrectly reached on case-insensitive Servers (Windows) by repeated values in a generated map. This has been fixed. #149704 (Job #28659) ** 'p4 integrate' could skip integrations in the face of large branch views coupled with large protection tables. This has been corrected. #149541 (Job #28422) ** 'p4 integrate' could report "no permission on file(s)" if the protections managed by 'p4 protect' had excessive wildcards (too many ...'s in too many entries). Now 'p4 integrate' should be no more sensitive than other commands to the number of wildcards in protections, and in any event should fail with a more appropriate message ("too many wildcards"). #145613 (Job #27892) ** Change #130372 caused a server with a form-out spec trigger that generates standard output upon success to crash when a user issued 'p4 spec' or 'p4 jobspec'. Form-out trigger standard output upon success also caused command-line options to be ignored during execution of 'p4 change', 'p4 group', or 'p4 submit' commands that fire the trigger. This has been fixed. #143891 (Job #27919) ** 'p4 change' would take out unnecessary write locks on certain tables. This has been fixed. #143551 (Job #27922) ** Change #142077 could cause a truncation error bug, if the journal file supplied with the -J option was in a different file system. This has been fixed. #142077 (Job #27607) ** Some Unix platforms (Solaris, HPUX, AIX) would fail trying to rotate the journal file. This has been fixed. #141953 (Job #27585) * Change #127617 caused P4EDITOR, P4DIFF, and P4MERGE settings with spaces to no longer be broken apart into distinct arguments on non-Windows platforms. This has been fixed. Windows clients continue to treat all parts of the command before the first +, -, or / as an executable path. #141402 (Job #27504) ** 'p4 client/label/branch -d' would request write locks of database tables that were not required for its operation. This has been fixed. #139650 (Job #26763) ** Rpc inbound and outbound sizes in bytes were sometimes incorrectly reported as negative when server tracking had been enabled. This has been fixed. #139099 (Job #25684, #24578) ** Rpc inbound size in bytes was incorrectly reported to be zero when server tracking had been enabled. This has been fixed. #138968 (Job #27061) ** Change #119708 introduced a regression causing 'p4 revert -k' to fail to report results of a successful revert when using tagged protocol. This has been fixed. #137032 ** Upgrading to 2007.3 will rebuild db.archmap and db.view (haveMap entries). This upgrade will fix bad data which was introduced by Job #24943 and previously patched on-the-fly by change #136742. #136601 (Job #26468) ** Failure to connect to a remote depot resulted in a garbled error message. This has been fixed. #133838 (Job #25794) ** 'p4 help protects' clarifies the behavior of the '-m' flag by noting that it does not report exclusionary mappings. #133764 (Job #26005) * 'p4 set -S ' will now print $P4AUDIT if it is set. #133327 (Job #25771) ** 'p4 submit' would let you update the changelist form with files not currently open for add/edit. Although these files would be ignored, the error would not be reported. This has been fixed. #133189 (Job #26009) ** The change #117342 introduced a regression that would prevent the use of 'p4 login' against a server that failed to find a reverse DNS entry. This has been fixed. #132920 (Job #25968) ** Very small journal files concatenated together might fail to replay with 'p4d -jr'. This has been corrected. #130369 (Job #25408) ** Issuing a 'p4 unlock' of a file which someone else was submitting might not always be detected. This has been fixed. #130219 (Job #12532) ** 'db.monitor' entries are not journalled but are incorrectly checkpointed. This has been fixed. #130201 (Job #25326) ** Fixed memory leak on 'p4 sizes' in summary mode. #129956 (Job #25373) ** Fixed tiny memory leak when a query string is missing the right-hand side of a relational operation. #129950 (Job #25347, #25371) ** Corrected processing of search queries which contain mixed case and wildcards. Searching is case insensitive. #129925 (Job #25349) ** Update the spec depot and index remaining content of jobs when a field contains a word which is extremely long. Note that these words will not be indexed. #129820 (Job #25340) ** 'p4 change -d' would make an unnecessary scan of the 'db.working' table. This could take a long time on large sites with many open files. Fixed. #129045 (Job #25274) ** 'p4 sync -p' run through the proxy would update the have list when the proxy needs to bring over a revision from the server. Fixed. #129045 (Job #23408) ** *** The proxy can effectively cache files with a zero modtime. #129045 (Job #22802) *** 'p4 -Zproxyverbose print' will now report if the proxy cache was used to satisfy the command. #128995 (Job #11155) ** 'p4 protect' now describes the 'admin' mode in the comments section. #128595 (Job #25245, #18873, #21511) ** Corrected underlying issue which caused the server to fail with 'integbatch: too many handles!' or 'syncbatch: too many handles!' errors. #128356 (Job #24800) ** A perforce server will shutdown with the message "License expired" even when a new license with a valid expire date is put in place (either manually or with the 'p4 license' command). This only happened if the license that the server was originally started with became out of date. #128087 (Job #17988) ** Failed authentication attempts are now recorded in the server error log. #127651 (Job #10125) ** 'p4 submit' of files imported from a remote depot could fail with the following error: Operation: dm-SubmitChange Operation 'dm-SubmitChange' failed. is missing from the rev table. This has been fixed. #127617 (Job #690, #5297, #24174) * Spaces in P4EDITOR, P4DIFF, and P4MERGE are now handled differently on Windows and UNIX. On UNIX, as before, separate words are treated as the command name and initial arguments. On Windows, separate words are treated as the command name (with embedded spaces), until a word begins with +, -, or /, which is assumed to introduce initial arguments. #127480 (Job #20986) ** 'p4 diff2 -u' incorrectly included binary files, which could result in unreadable binary diffs. This has been changed. Now binary files are only force diffed when the '-t' option is used. #127031 (Job #23377) ** Server audit output '-A auditlog' could also end up in the errorlog file '-L logfile'. This was most likely to happen when tracking '-vtrack=1' was enabled. #124983 (Job #12956, #21593) ** 'p4 monitor show' will no longer show stale processes. Those processes that never exited correctly will have their status records automatically removed from the db.monitor table. #124936 (Job #19911, #21506) ** %clienthost% in triggers will be replaced with the IP address of the client if no reverse DNS entry is found. #124875 (Job #16726, #18049) * 'p4 sync' (and other commands) could loop if the underlying filesystem had certain permission combinations, such as the ability to create but not chmod a file (usually on network filesystems such as samba or NFS). This has been corrected. #124344 (Job #24961) ** Submitting a new revision to an RCS ,v file could result in losing previous revisions if the file access mode had been manually modified to remove the read permissions. This is now prevented. #123740 (Job #24900) ** 'p4 edit' of a file synced back to a point where it had a different filetype than the head revision's filetype would treat the file as if it were the head revision type instead of the sync'ed to revision. This typically caused problems with symlinks either by not changing file modes or changing the file mode of the target of the symlink. #121849 (Job #24538) * Negative numbers, or numbers which overflow into negative numbers, are no longer allowed as changelist arguments to p4 commands. For instance 'p4 review -c 111111111111' against a windows server would cause the changelist argument to overflow into a negative value, resulting in the server consuming excessive cpu and hanging the machine. Now this no longer happens. #121382 (Job #24558) * Pending revision entries in db.revpx, created when content triggers are used, now correctly report the file's size (instead of reporting size as -1). #131532 ** Client commands originating through proxy servers are now logged in the server and audit log files with the proxy host/client host format. The format for the 'p4 monitor show -e' now reports the client host, rather than the proxy host for these same commands. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2007.2 New file type 'utf16' - #119109 * ** *** A new filetype utf16 has been added which is a textual file type which stores UTF16 client files. These files must be valid UTF16 translatable into UTF8. When the content of these files is used in command output such as 'p4 diff' that content will be in UTF8. Only full file representations will be in UTF16. This filetype works with the server in non-unicode mode as well as unicode mode. If these files are sync'ed with pre-2007.2 clients, they will be transferred as UTF8. If the server is in unicode mode, command output with contents from UTF16 files will be converted according to the P4CHARSET selected. BOMs are needed to automatically detect utf16 with the 'p4 add' command. Without a BOM, a file is assumed to be in client byte order. When a file is written such as via 'p4 sync', it will be written with a BOM and in client byte order. File type modifier '+S' enhanced - #115478 (Job #1880) ** The filetype modifier '+S' has now been extended to include an optional numeric value that informs the server of the number of file revisions to keep. e.g. p4 add -t binary+S7 foo.exe In the above example as the eighth revision is submitted, the first revision will be purged. The numeric values supported are 1 through 10, 16, 32, 64, 128, 256, 512. Note that files with this filetype are never lazy copied. This means that although space is saved when purging old revisions, multiple branching of a file will result in more space used. See 'p4 help filetypes' for more information. New 'p4 sync' option bypasses db.have updates - #111247 (Job #22857) ** 'p4 sync' now sports a '-p' option. This allows the user to sync files without the server keeping track of it. This option is very useful when populating build clients or when publishing content when there is no requirement for saving the client workspace state. Performance improvements - #114771, #113299, #117618, #115072 (Job #23907, #6837) ** 1) Submit of branched files Continuing on from the branch/submit improvements made in the previous release. The commit phase of 'p4 submit' has been rewritten to improve performance during large branch creation. Most commands are now blocked for only a fraction of the time when compared to previous releases. The overall time taken to create the branch has also been reduced as much as 30%. 2) Connection protocol * The Perforce connection establishment protocol and buffering have been adjusted to avoid the nominal 1/10th second delay that TCP can introduce on some operating systems. In some cases, this can drastically reduce the time needed for a series of short commands. 3) @label,@label speedup Specifying revisions using @label,@label could be really slow when there is little overlap between the filespec and the number of matching files in the label. 4) Lockmode changes on last access updates The server no longer takes write locks on db.user or db.domain to update access time unless the access time is actually updated. New admin commands - #108286, #118447 (Job #19309) ** 'p4 admin dbstat' Dbstat scans the internal nodes pages of database file(s) then outputs some simple statistics. The operation will lock out write access to the database table during its scan, so therefore it should be used with care. 'p4 admin updatespecdepot' Updatespecdepot instructs the server to archive forms into the spec depot. This command can be very useful for installations that have just enabled the spec depot and want to pre-populate it with existing form data. See 'p4 help admin' for more information about these new commands. New triggers - #116132 ** 'fix-add' trigger will be executed prior to adding a fix with the 'p4 fix' command. 'fix-delete' trigger will be executed prior to deleting a fix with the 'p4 fix -d' command. 'form-commit' trigger is executed after a form has been committed to gain access to automatically generated fields. (This trigger which was introduced in 2006.2 but undocumented is now fully supported). See 'p4 help triggers' for more information. Minor new functionality in 2007.2 #119528 (Job #14419) ** 'p4 protect' will not allow the user to delete its last 'super' entry. #119344 (Job #23591) ** Content triggers can now access the timestamps on the files being submitted via the 'headModTime' field in the output of 'p4 fstat @='. Previously timestamp information was not available until after the files had been submitted. #118826 (Job #1159) ** 'p4 change' has a new '-u' option to allow the owner of a submitted change to update its description and/or jobs fields. #116469 (Job #202, #218, #7522, #8649, #13352, #15653, #16636, #16845, #16888, #20370, #22382, #23343) * ** Changes to integrate and resolve. 'p4 integrate' now performs compatibility checking and will disallow integration between incompatible types, unless the '-t' flag is used. (see chart below for type compatibility). When files have been integrated with '-t', 'p4 resolve' behaves as follows: 'accept theirs' changes the type of the file on the client. 'accept yours' reverts the type change so that the open file type will match the 'yours' file type. Note, this new behaviour is also true if the user issues a 'p4 reopen' and changes the file open type. T - Resolved as text B - Resolved as binary x - Incompatible types (requires 'integrate -t') Compatibility: text binary symlink resource unicode apptxt apple text T B x x T x x binary B B x x B x x symlink x x T x x x x resource x x x B x x x unicode T B x x T x x apptxt x x x x x T x apple x x x x x x B #119955 (Job #23698, #24251, #24207, #23469, #24150) ** The 'p4 integrate' algorithms for suppressing reintegration and for picking the optimum base, which were reimplemented in 2006.1, have been tuned significantly for this release. The following new changes have been made: Integrating a single 'copy from' revision now gives credit for all earlier revisions, so that a subsequent 'p4 integrate' of any earlier revision will find no work to do. This can only come about by 'cherry picking' (providing to 'p4 integrate' specific revisions to integrate). Pending integration records (files opened with 'p4 integrate' but not yet submitted with 'p4 submit') are now considered when finding the most appropriate base. This makes integrating into a related file already opened for branch possible without the 'p4 integrate -i' flag. 'p4 integrate' follows indirect integrations through complicated combinations of merge/copy/ignore integration records better. This should result in fewer integrations being scheduled, and closer bases being picked, for integration between distant files. 'p4 integrate' could wrongly choose a base on the source file after the revisions needing to be integrated if the revisions needing to be integrated were before revisions already integrated. This normally only comes about in cases of 'cherry picking' (providing to 'p4 integrate' specific revisions to integrate). 'p4 integrate' in certain cases wouldn't find a base (or choose a poorer base) if the source file was branched and reopened for add, and then the original file was changed further and branched again. #115979 (Job #11938) ** 'p4 monitor terminate [id]' can now be used successfully on commands that have moved beyond the compute phase of their processing. Note, that it may take up to 10 seconds before the process will actually terminate. Bugs fixed in 2007.2 #140379 (Job #27216) ** When integrating between two branches separated by an intermediate branch, 'p4 integrate' would conclude there was nothing to integrate if the target file had merged from a revision of the intermediate file that itself was a copy of a revision in the source file. This merge/copy chain is now treated as a merge, not a full copy. #139758 (Job #27240) ** The p4d server on SOLARIS could intermittently terminate a command due to incorrect detection of a client dropped connection. This has been fixed. #136754 (Job #24800) ** A perforce server could shutdown with the message "License expired" even when a new license with a valid expire date was put in place (either manually or with the 'p4 license' command). This only happened if the license that the server was originally started with became out of date. #136742 (Job #26682) ** 'p4 obliterate' under certain conditions could purge an archive file which still had lazy copies pointing to it. This change prevents that from happening. #136614 (Job #24943, #26541) ** In certain cases inconsistent results depending on depot path could be observed for some commands. Typically when this happened an unrestricted 'p4 sync' would bring back correct behaviour. This problem only occurred when a file that had been previously synced was no longer mapped by the current client view and the client path name had a '.' in a significant position of its path. This has been fixed. #135827 (Job #26464) ** The change (#120526) also introduced a regression that could cause 'p4 changes' to not work correctly with the '-u' or '-c' option when specifying '-m1 '. This has been fixed. #135235 (Job #25662) ** Unintegrated revisions prior to a delete could cause undesirable file re-branching in subsequent integrations. This change brings back an older behavior, which is to not re-branch from revisions prior to a delete when the target is also deleted. #132978 (Job #25981) ** In the rare case where the Perforce Server on Windows fails to create a thread, the reason is now logged in the server errorlog. Under these conditions the server will no longer try to run the command in the main parent thread, but will wait for resources to become available before executing any more commands. #132390 (Job #25828) ** 'p4 changes -i', 'p4 fixes -i' and 'p4 jobs -i' under certain conditions could exclude changelists that were integrated into the specified files. This problem has been fixed. #131348 (Job #25612) ** The Perforce Server on Windows could hang for some commands when the auditlog was enabled. This has been fixed. #131114 (Job #25312) ** The change (#117342) also introduced a regression that would prevent the use of 'p4 login' (perforce tickets) against a central authentication server. This has been fixed. #128851 (Job #24156) ** The server no longer exits after 10 consecutive attempts to accept an incoming connection. Usually the reason for this is that the computer is under configured and its simply a server resource problem. In some cases the problem can be on the client end. Because of this the server now sleeps, then continues to retry. #124999 (Job #17409) ** When the 'p4 integrate' command syncs files it will now sync file deletes before adds so as to remove directories in case they are replaced with normal files. #124947 (Job #25038) ** 'p4 submit' would wrongly prevent a check submission when a binary file is resolved due to simple version updating (i.e. p4 sync to head requiring p4 resolve) rather than due to 'p4 integrate'. The submit report report, "edit or revert" but the file is already open for edit. #123381 (Job #24793) ** Adding a job with three strings of about 2700 characters in the description could possibly corrupt the jobs index btree. Fixed. #123248 (Job #24711). ** 'p4 submit -d' would set the status field to "ignore" in all jobs matching the user's JobView. Now jobs matching a user's JobView are not modified when using "p4 submit -d". #122782 (Job #24663) ** 'p4 submit' could fail when 'p4 integrate' mistakenly attempts to branch from a deleted revision if that source file was re-added and that re-added revision was ignored into the target file. Fixed. #122672 (Job #24270) * .DS_Store files are now deleted when removing a directory. (seen mainly on the Macintosh). #122284 (Job #24671) ** 'p4 submit' would not always honor the submit options if the change form had to be edited a second time. This has been fixed. #120969 (Job #24454, #24205) ** It is now possible to configure the filetype for spec depot files by using 'p4 typemap'. e.g. TypeMap: text //spec/client/... Note, the default for spec files is ctext. By changing the creation filetype to text (like in the example above) the server will not require subdirectories which can be a problem with sites that have more clients than their filesystem can create directories for. When setting a filetype for spec depot files only the server storage type has any relevance, setting storage modifiers will have no affect. #120526 (Job #17862) ** 'p4 changes -m1 ' optimization of using the db.revcx table does not always perform well. Now if the scan of the db.revcx table does not find any matching files after trying a pre-set number of rows it will give up and fall back to using db.rev directly. #120385 (Job #24149) ** 'p4 integ' could change the HaveRev to 'none' of a synced file when used with a branch spec and fileset that creates an out-of-order integration list. This has been fixed. #119979 (Job #24335) ** Under certain rare circumstances the error: 'Database open error on db.!' 'BTree is corrupt!' Could be incorrectly displayed. This could only happen on windows servers due to an initialization problem. This has been fixed. #119708 (Job #21679) ** 'p4 revert -k ' was checking the client side file when it does not need to. Fixed. #119687 (Job #24079) ** Running p4 diff2 with tagged output would leak a small amount of memory on each pair of files diffed. Fixed. #119631 (Job #23077) ** Tagged output of p4 diff2 -q was including identical files. Changed so that with the -q flag identical files are not included in the tagged output. #119616 (Job #23950) * 'p4 -d ' run in unicode mode would ignore the command line directory override. Fixed. #119597 (Job #23999) * Exif format jpeg files were added as binary rather than cbinary (already compressed). Fixed. #119596 (Job #24023) * p4 diff -sd would wrongly report a symlink as missing if that symlink's target was missing. Fixed. #119245 (Job #24204) ** Triggers run on Unix platforms were inheriting some open file descriptors from the server. This should no longer occur. #119012 (Job #19922, #13231, #18962) ** The error message and documentation have been improved for 'p4 change -f' to reflect which fields are read-only. #118635 (Job #22297) ** 'p4 submit' could submit a branched file with a bad archive entry if the source revision of the branched file is purged before the submit is completed. This has been fixed. #118282 (Job #24104) * Hostname lookups that succeed without returning an address will no longer cause the client to crash. #118102 (Job #24116, #24081, #24447) ** Error-handling for the spec commands has been improved to not allow the mutually exclusive '-i', '-o', and/or '-d' flags to be used together in one spec command. Previously wrong errors may have been generated, and in some cases the command may have executed using any one of the flags. #118064 ** 'p4 obliterate' no longer reports delete revisions in the list of revisions being "purged". The "purged" message is now reserved for the act of removing file contents from the archive. #118057 (Job #23536). * ** 'p4 submit' with the 'revertunchanged' submit mode would fail to reset the client file permissions. This has been fixed #117730 (Job #16296) ** p4 job -d will only delete jobs that have no associated pending or submitted fix records. #117342 (Job #16707, #18349) * ** Different values of P4PORT for the same server instance e.g. (ip:port# vs host:port#) would result in multiple ticket entries in the Perforce ticket file. This has been fixed so that the same server instance will always produce a single ticket entry that either P4PORT value can use. #117090 (Job #23953) ** 'p4 integrate' between two deleted files would give a bogus error message about permissions. Now it more properly says "all revision(s) already integrated." #116771 (Job #23915) ** 'p4 obliterate file@change' of a file opened for add would remove the open record, while 'p4 obliterate file@change,change' would not. Now neither does: to remove an open-for-add record you must use 'p4 obliterate file' without a revision. #116451 ** Superusers can now delete protected counters using 'p4 counter -f -d'. Previously they could be set, but not deleted. #116428 (Job #15562, #23777) ** Syncing between revisions where the revision on the client was binary+w (or other non-text types) and the new revision was binary would incorrectly fail with a "Can not clobber" message. Also, if a client had a writable file not controlled by Perforce and that file is then added by another client as a +w type Perforce would overwrite the file when syncing. #116173 (Job #14880) ** Failed trigger of type 'change-content' would leave edited files on the client workspace in a read-only state. This has been fixed. #116113 (Job #15520) * ** Providing the security level permits it, expired perforce tickets no longer override valid P4PASSWD settings. #115153 (Job #23630) ** *** It is no longer possible to start more than one Perforce Server or Perforce Proxy Server on the same TCP port on a Windows platform. Now such attempts will correctly report that the address is in use. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2006.2 Client file tamper checking - #101065, #101345, 101699 (Job #17607, #15928, #15654, #20029, #20587) * ** 'p4 submit' will now check that files integrated and resolved with 'am', or 'ay' are not modified after 'resolve' and before 'submit'. If such tampering is detected then an error will display the modified file and request that the file be re-edited or reverted in order to complete the submit. e.g. //client/main/foo tampered with after resolve - edit or revert. To check for tampered files before submitting, 'p4 diff -sb' will now report files which are open for integration and have been resolved but have been modified. These files can be reopened for edit with the command 'p4 diff -sb | p4 -x - edit'. Note that in order for tamper checking to work with files resolved with 'am', a 2006.2 client as well as the server is required. Tamper checking for branch/sync files and resolve 'at' files is not done at submit time, but 'p4 diff -sb' will report those files. Tamper checking is not done on files imported from a remote depot. New client option 'SubmitOptions' - #106812 ** The new 'p4 client' field 'SubmitOptions' allows the user to alter the behavior of submit. The six different values for this field affects what happens to unchanged files and if submitted files are reopened. For more details see 'p4 help client'. SubmitOptions unchanged submitted value files files ---------------------------------------------------- submitunchanged submitted submitunchanged+reopen submitted reopened revertunchanged reverted revertunchanged+reopen reverted reopened leaveunchanged left open leaveunchanged+reopen left open reopened In addition 'p4 submit' now sports a '-f option' flag. This allows the user to override the SubmitOption which is set in the client. e.g. p4 submit -f leaveunchanged Speedup of 'p4 submit' branched files - #101435, 107393 ** The time taken to update the metadata (locking db.* files) has been reduced by as much as 40% by a combination of the following changes. The biggest reduction is seen when submitting a large number of branched files. 1) db.archmap table replaces db.archive An earlier version of the server improved obliterate performance by introducing the db.archive table. A side effect of introducing this table was a performance penalty when submitting files that resulted in lazy copies. This table has now been replaced with the db.archmap (archive map) table that does not suffer the same performance problem. 2) buffered journal file Performance has generally been improved by optimizing the way that journal records are written. This change reduces the number of writes and the number of locks taken against the journal file. 'Automatic' labels - #107125 (Job #20887) ** The new automatic label feature introduced in 2005.2 but undocumented is now fully supported. By adding a "Revision" field to the label specification you can now make that label appear as if 'p4 labelsync' had been done on the label using that revision. The only difference is that if the "Revision" specification is dynamic (e.g #head) the apparent contents of the automatic label will change, while a static label set with 'p4 labelsync' will not. Note that when executing the command 'p4 labels ' automatic labels will not be displayed. Improved management of remote depots - #106497, #100829, #108461 (Job #19730, #18694, #14896, #22146) ** Several changes have been made that improve the management and interoperability of remote depot servers. 1) Better lock support The server no longer locks the db.rev (or db.revhx and db.revcx) tables when accessing only files in a remote depot. This means that using 'p4 dirs' on a remote depot (often by expanding a remote folder in p4v) will no longer hold local locks. 2) MaxScanRows/MaxResults support Remote depot operations are now subject to MaxScanRows and MaxResults limitation imposed by 'p4 group' on the remote user 'remote'. 3) Protocol to negotiate table version. By negotiating the highest level for table compatibility several problems have been solved. Previously, files with some complex type modifiers (like text+Fk) could not sync from remote depots. The negotiation allows for new fields like the file size to be included in data transfer from the remote server ('p4 sizes' will work with remote depots). New MaxLockTime in 'p4 group' - #106371 (Job #21206) ** 'p4 group' now has a 'MaxLockTime' field, which can be used to prevent queries from holding locks on database tables for too long. See 'p4 help maxLockTime'. Improved license file handling - #103739 (Job #1948) ** The new 'p4 license' administrator command allows a user with 'super' access to add a new license file to Perforce without having to shutdown the server. See 'p4 help license' for additional information. Minor new functionality in 2006.2 #112275 (Job #3582) ** Journal files now contain lines that demark rows written under a single database lock, to better support tools that parse it. #107394 ** 'p4 obliterate' has been changed for this release. Obliterate now makes use of the db.archmap (archive map) table to check for branched files (lazy copies). If lazy copies exist then the archive (file contents) will not be removed, consequently obliterating a file does not guarantee that the corresponding archive file is removed. See 'p4 help obliterate'. #107110 (Job #21543, #22756) ** Files are now stored in the database archive keyed to the filename and (pending) change number, rather than filename and revision number. This information is normally only ever reported to users by the 'p4 obliterate' command, but administrators who examine the archive will notice the change as well. Note that old revisions in the archives will not be renumbered. #107943 (Job #18440) ** Resolve conflict markers will now use whole paths to indicate file names and revisions. The ORIGINAL and THEIRS files will be in depot syntax while the YOURS file will be in client syntax. #107082 (Job #3271) ** The new 'p4 sizes' command displays size information for files in the depot. It is functionally similar to the UNIX 'du' command. See 'p4 help sizes' for additional information. #106450 (Job #258) ** 'p4 submit' now sports a '-d description' option. This allows the user to submit files without the need for a changelist dialog. See 'p4 help submit'. #105638 (Job #10664, #19802) ** 'maxScanRows', which can be applied via 'p4 group' to prevent users from consuming too much server resources, has been extended to a number of additional commands and tables. Previously, it only applied to the db.rev, db.revhx, and db.revdx for all commands and the db.revcx table for 'p4 changes'. Now it applies to all tables for the p4 annotate, branches, change, changes, clients, describe, diff, diff2, filelog, files, fixes, fstat, have, integrate, integrated, jobs, labels, labelsync, lock, obliterate, open, opened, release, reopen, resolve, resolved, reviews, sync, and tag commands. maxScanRows applies separately to the number of rows read from each table, not the total from all tables. The most visible effect of this change is that 'maxScanRows' will limit access to the db.integed table for 'p4 integrated'. #102279 (Job #6053) ** 'p4 branches/clients/labels' now sports a '-u user' option. This flag limits the command output to those owned by the specified user only. #101906 (Job #10634, #21275) ** 'p4 changes -s pending' now allows a filepath where previously it didn't. #98791 (Job #19375) ** The Perforce Server on Windows now uses native I/O routines for database access rather that using the POSIX layer. This fixes the problem of hitting the maximum number of open POSIX file handles. #121930 (Job #24586) ** 'p4 verify -v' on Windows could leak file handles when encountering missing or corrupt revisions in RCS archive files. This has been fixed. #121180 (Job #24532) ** Under very rare circumstances of data in a btree, which are more likely just after a checkpoint restore, a btree record insert could cause the server to loop forever. Fixed. #120458 (Job #24389) ** 'p4 resolve' used interactively resolving a ktext file with 'ay' i.e. accept yours would incorrectly report the resolved file as being tampered with at submit time or with 'p4 diff -sb'. Fixed. #119263 (Job #24236) ** 'p4 obliterate' could leave database files in an inconsistent state. This could only happen if the user hit ^C or the command 'p4 monitor terminate ' was used during the processing of the obliterate. This has been fixed. #116847 (Job #23776) ** p4 submit would fail for files reopened by a previous p4 submit with a reopen option if those files were branched by the earlier submit. Fixed. #114374 (Job #23004) * When p4d is in unicode mode, and the p4 command line has P4CHARSET set to a wide character set (i.e. utf16) and P4COMMANDCHARSET set to a character set other than utf8, p4 commands to edit specifications would interpret those specs as utf8 instead of the P4COMMANDCHARSET. Fixed. #113270 (Job #23258) ** Files changed from type ktext to text would be stored at the server with the keywords unexpanded even if the files had been submitted with the keywords expanded. This behavior, present only in release 2006.1, has been fixed. #112219 (Job #23211) ** 'p4 describe -s' would fail if the change contained a file in which the file's previous revision had been obliterated. This behavior has been fixed. #112011 (Job #22578) ** 'p4 change -o' with tagged output would not see any modifications made by a form-out trigger. This has been fixed. Bugs fixed in 2006.2 #111144 (Job #22987) ** 'p4 describe' on a change where an affected file's previous revision has been deleted could report incorrect differences. This case is now correctly handled by displaying an error message instead. #110722 (Job #22731) ** 'p4 protects' command now displays an error message if the protections table is empty. #110294 (Job #22537) ** 'p4 login ' which requires 'super' privilege can change the impersonated user's current session timeout. This has been fixed. #109913 (Job #18387) * The cygwin 'p4' client program had trouble creating a directory if there was an executable by the same name in the parent directory. This was due to the way cygwin makes "foo" and "foo.exe" look the same. Now the 'p4' client program handles this case. #109855 (Job #18182, #10561, #19916) ** Excessive wildcards (... and *) in client views, in branch views, in the protection table, and on the command line could cause the server to consume a lot of memory and time trying to work out all the possibilities. An efficient algorithm has been put in place that simplifies this work, and so such use of wildcards should not cause nearly as much problem for the server. This problem was previously addressed in 2006.1 by enforcing an internal limit on wildcard handling, but that was too restrictive and the limit was removed as a patch. A less restrictive internal limit is back in 2006.2, and that limit is very unlikely to be hit with the new algorithm. #108679 (Job #22113) ** 'p4 filelog' can make unnecessary scans of the rev table under certain conditions. Typically this problem is triggered when the file following the argument filelist is excluded by a protection mapping. Fixed. #108376 (Job #22332) ** 'p4 fstat -Rn' would not filter files correctly as described in the documentation. This has been fixed. #108292 (Job #13476) ** On some platforms, p4d would not start or log errors if the error log file exceeded 2 Gbytes. Fixed, now log files should not have problems exceeding 2 Gbytes if the platform supports such large files as database files. #108230 (Job #22296) ** Corrected example trigger type in "p4 triggers" comments #108021 (Job #21864) ** 'p4 integrate -f' of a deleted file more than once would leave the target file in an unusable state, where 'p4 submit' would say "Merges still pending" and 'p4 resolve' would say "file - has been deleted - revert and sync". Now the subsequent 'p4 integrate -f' has essentially no effect. #107629 (Job #15878) ** Errors from a remote depot (most likely lack of permission for the 'remote' user) were going unreported by the local server. This has been fixed. #107321 (Job #14726) ** Creating a new user with 'p4 user -f' with server security 2+ would result in "Bad parameters passed to mangler!" errors. This no longer happens, and the user should now only get the expected password error messages instead. #107305 (Job #9814, #17099) * ** Logic regarding file clobbering and symlinks has changed substantially. Syncing a symlink onto a writable file should now honor the clobber client option. If a file type changes from symlink to text, the sync will no longer report a clobber error if the previous symlink points to a writable file. The P4 API also changed, see the p4apinotes.txt for details. #106098 (Job #21942) ** Adding a View entry to any spec form with a leading '$' will result in an error and the form will not be saved. Previously this would not result in an error, and the spec would be saved without the entry, and also result in a bogus db.view value with map state of 3 corresponding to this invisible view. In the case of a branch spec, this would cause subsequent attempts to integrate using the spec to fail. #105408 (Job #19573) * ** Temporary file handling has changed to not fail if a conflicting temporary filename already exists. Temporary files are also now named using a random sequence. #105334 (Job #20829) ** Fields in spec forms (branch, client, label, etc) that have a # in the value are now quoted when output, so that the # is not stripped as a comment when the form is read back in. #105272 (Job #21901) ** Date fields in jobs which are set by the server will be updated once after validating the job contents and again upon commit so that the value will reflect the time of commit. #105043 (Job #21822) * ** Unknown field types or unknown field options in a spec definition no longer cause the server to abort on windows. #104828 (Job #20584) ** 'p4 resolve -at' after a 'p4 integ' between files where only one of the files has keyword expansion as part of its type caused problems because keyword expansion would be done based on the source file's type, but after submit, sync would expand keywords based on the target file's type leading to differences which would be reported with 'p4 diff -se'. With this fix, in this case, 'p4 resolve -at' will expand keywords based on the target file's type. The proxy was also caching the wrong keyword expansion which could appear in other clients later sync operations. #104340 (Job #19220) ** Server lock errors "Locking failure: 'table1' locked after 'table2'!", and "Locking failure: no upgrading 'table's' lock!" no longer cause the server to abort. Now the error is logged and will be tracked if server tracking is enabled, and the server will not exit. #102859 (Job #7130, #18896, #17100, #2540) * ** A multiple resolves into the same target file revision where a subsequent resolve resulted in an 'at/accept theirs' i.e. a copy would cause earlier resolves to be converted into 'ignore'. Now, if you have new clients and this new server these earlier resolves may be converted into 'merge' if the merge system can reasonably determine that no work is lost. #100946 (Job #12339, #13329) ** 'p4 integrate' will now integrate into files already opened for add/branch/import. The action (add/branch/import) doesn't change, but a merge for 'p4 resolve' gets scheduled. This is the same behavior that has been available with files opened for edit/integrate. #100886 (Job #20653) ** 'p4 integ -b' failure caused by invalid view mappings is reported more accurately. If the failure is caused by invalid havemap entries, the error will not be erroneously reported as invalid overlay mappings. #100847 (Job #21172) ** The # (comment) character in specs is now treated more consistently: it never introduces a comment in text blocks, and always introduces a comment in non-text block values. #100814 (Job #2146) ** 'p4 client -d -f ' will now delete pending changelists created by the named client and also delete any fix records associated with it. The -f flag is now always required when deleting a client that has a numbered pending changelist associated with it. #100613 (Job #5422, #7152, #12904, #21751) ** / is no longer allowed in client or depot names. Because of the way Perforce manages views, having a / in the name can cause data inconsistencies. Now / is simply disallowed. Most other entities (branches, labels, jobs, etc) can still have a / in them. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2006.1 User file access tracking - #99426 ** The server can now log individual file access to an audit logfile. When auditing is enabled the server logs every time file content gets transferred to the client. Consequently this file will get large very quickly and there may be a small performance impact. To enable this feature: % p4d -r /usr/perforce -A auditlog Example output: 2006/05/09 09:52:45 karl@nail 127.0.0.1 diff //depot/src/x.c#1 2006/05/09 09:54:13 jim@ston 127.0.0.1 sync //depot/inc/foo.h#1 This was undocumented functionality in the 2005.2 release, but is now fully supported. 'p4 integrate' improvements - #96464 (Job #413, #17318, #17577, #17751, #18293, #20006) ** 'p4 integrate' has been rewritten to improve three areas, mostly with respect to indirect integration (when there is no direct relationship between source and target): 1) Better performance, especially when faced with rich branch history and many out-of-date files; 2) Better recognition of previous integrations, resulting in fewer merges; 3) Better base selection, using a "closest ancestor" approach, resulting in simpler merges. The previous logic almost invariably stuck to the source file when selecting the base. Now any revision of the source, target, or indirectly related files is a candidate, with the revision that shares the most changes with both the target and source being selected. As before, 'p4 integrate -o' and 'p4 resolve -o' report the selected base. Minor new functionality in 2006.1 #99037 (Job #20692) ** 'p4 integrated -b branch' now uses the branch view more efficiently to limit the number of integration records that have to be scanned. #96538 ** Minor 'p4 integrate' fixes with respect to deleted revisions: 'p4 integrate -Di' now attempts to integrate all outstanding revisions of a file that has been deleted and re-added, rather than only those revisions since the last add. Previously '-Di' would find a base prior to the add but would only give credit for the revision after the add. 'p4 integrate -d' now implies 'p4 integrate -Di', as 'p4 help integrate' seems to have suggested. #95979 ** The merge algorithm has been rewritten. It now produces fewer conflicts to resolve, making automatic merging ('p4 resolve -am') more likely to succeed. Also, it is now better able to recognize identical changes that have been made in 'theirs' and 'yours' files. This should reduce the chances of getting duplicate inserts and generally improve merge output. #95535 (Job #19994) * Clients operating in unicode mode with utf8 as their character set will now validate that data going to the server is valid utf8 and will error if it is not. New P4CHARSET options allow unvalidated operation. #93413 (Job #20097, #18869, #17246) ** The 'monitor' counter now reflects the level of monitoring that the server provides. '0' and '1' are unchanged from from their current behavior of no monitoring or monitor running commands respectively. '2' also reports on idle processes that have run at least one command. Changes to the monitor counter requires a restart of p4d. #91389 ** 'p4 submit' has been modified to improve concurrency through better database locking. #90477 ** The following 'p4' commands now sport a '-m max' option: 'branches', 'clients', 'diff', 'fixes', 'fstat', 'groups', 'labels', 'opened' and 'users'. When this option is specified it limits output to 'max' number of entries. #88933 (Job #7335) ** 'p4 groups' now has a -i flag to include subgroups when listing to which groups a user or group belongs. #89305 (Job #2102) ** The new 'p4 protects' command shows the lines from the protections table that affect the given user/path. Bugs fixed in 2006.1 #114840 (Job #23592) ** CPU usage has been reduced for 'p4 integrate' when it is handling indirect integrations through a large number of branches (hundreds or more). #113964 (Job #19865) ** Concurrent 'p4 submit -c' and 'p4 change -i' of the same changelist could (under rare circumstances) leave a pending change record. Since the pending change record and the submitted change record share the same description, deleting the pending change would result in removing the committed change description. This has been fixed. #113941 (Job #23440) ** Unable to edit existing jobs which contain a TEXT field of type always or once and were set using a preset. This has been fixed. #113687 (Job #10201) ** 'p4 revert -a' could delete a local (modified) file, if the head revision was deleted and the client had been subsequently synced. This has been fixed. #113339 (Job #23307) ** 'p4 opened -a //...' was being adversely affected by the optimization in change #109212. It is now back to its previous performance. #113270 (Job #23258) ** Files changed from type ktext to text would be stored at the server with the keywords unexpanded even if the files had been submitted with the keywords expanded. This behavior, present only in release 2006.1, has been fixed. #112408 (Job #23191) ** 'p4 depot' will not abort when it encounters a UNC path in the Map field so long as the path also ends in '...'. UNC path handling in the depot form was broken by change 93286, but it has now been fixed. #109659 (Job #22438) * Apple file types (apple, resource, etc...) stored from a PPC or classic Mac and later synced onto an Intel Mac or vis versa would have their Finder information swapped. Fixed. However, such apple files submitted from Intel macs may need to be synced with an old client and resubmitted with a new client to fix bad Finder information. #109240 (Job #22460) ** The internal buffer on labels for 'p4 labels filespec' has been raised from 10,000 to 1,000,000. The command works regardless of the number of labels being examined, but if under the limit the command releases an important lock (on db.domain) early, allowing other commands to run. #109212 (Job #22288) ** 'p4 opened -a filename' has been sped up considerably for sites with a large number of client workspaces. Previously, its performance was related to the total number of client workspaces on the server, but now it is only affected by the client workspaces that have the named file(s) opened. #108308 (Job #21706) ** Change 89167 introduced in r06.1 restricted the use of '...' wildcards in client, branch and protections maps in order to prevent excessive use of cpu and server crashes. The limit imposed by that change was determined to be too restrictive, so the limit was lifted. #108264 (Job #22306) ** 'p4 fstat -W ' performance could be very slow if a large number of files are opened. This has been fixed. #107809 (Job #22198) ** 'p4 integrate' would sometimes skip integrations when the integration history involved a copy away from the target. This has been corrected. #105845 (Job #21946) ** Using 'p4 diff2' with a content trigger against a pending revision could incorrectly identify files as identical when they are different. This has been fixed. #105715 (Job #21893,#34376) ** Submitting a new version of a file with a pre-2003.2 client would result in the wrong digest value being set. This has been fixed. #104421 (Job #21735) ** Classic Mac OS clients could cause the 2006.1 p4d server to exit with an error about translate paths for OS 'current'. Now the server will not exit. #104154 (Job #21741, #21742) ** Memory leaks fixed. Server leaked a small amount of memory for each table opened which was modified. #104130 (Job #21624) ** p4 integrate of files with many branches and a complex integration history could cause the server to run out of memory. Fixed to limit the extent and depth of history searching. #104074 (Job #21595) ** The new merge code was choosing an edit over a conflict even though the "theirs" edit effectively stomped on the "yours" delete. In most cases since both "yours" and "theirs" are removing lines this is probably a safe thing to do, however for safe merging this case will now be marked as a conflict like it was in the previous release. #104039 (Job #21693) ** Integrating a ktext file to a text file resulted in bad checksums when running 'p4 verify' using the initial 2006.1 server. Fixed. #103879 (Job #21587) ** 'p4 changes -i' under certain conditions could exclude changelists that were integrated into the specified files. Fixed. #103651 (Job #21613) ** When a job is updated without specifying the '-f' flag, the server will reject changing the value of any 'always' or 'once' field to a new non-null value. If these fields are either omitted or have an empty value, then the server will set the 'always' fields as specified in the presets or restore the current values for the 'once' fields. By using this method of updating jobs, an application loses the ability to have the server detect potential job clobbering and will instead have to implement its own method for preventing overwriting of valid data. #103316 (Job #21578) ** Using an older proxy (i.e. prior to 2006.1) with a 2006.1 server could cause binary files to be treated like text files and subject to newline translations. Other cases where filetypes get changed to text also occur. Fixed. #103097 (Job #21451, #21589) * ** The new merge code was not recognizing certain cases which were borderline conflicts. This change applies a more conservative approach, now choosing to throw those edge cases into conflict blocks. #102793 (Job #21513) * p4 integrate with a 'cherry picked' source range might choose a bad base when a 'dirty merge' from the target to the source files is present. Fixed. Similar to Job #15656. #102186 (Job #21467) ** 'p4 revert -a' could incorrectly report "no file(s) opened for edit". This was introduced by change #94600 which prevents file type changes from being reverted with the '-a' flag. This has been fixed. #100015 (Job #21070) ** 'p4 login' with a very high value for timeout would always create a new server ticket, rather than extending it. This would mean that logging in from one machine would effectively log you out of another. This has been fixed. #99861 (Job #21033) ** 'p4 integrate' no longer needlessly locks the db.revsx table (the revision table for spec depot entries), so that long running 'integrate' commands don't block spec updates. #99829 (Job #20599) ** Shell expansion of 'p4' command line arguments no longer occurs when the command invokes a trigger. #95339 (Job #19759) ** p4 print without the -o option can constructively use the proxy's cache now. For this to work both the server and the proxy must be upgraded. #94979 (Job #4169) ** The error "Client 'client' can only be used from host 'host.com'" would also be generated if the hostname was case mismatched. This check has now been made case-insensitive. #94951 (Job #1138) ** 'p4 revert' has been changed to prevent a user from reverting a file opened by different user. #94600 (Job #11390) ** 'p4 revert -a' default behaviour has been changed so that it no longer reverts files that have been opened with a different type. #94008 (Job #20002, #9869) ** Starting 'p4d', or performing checkpoint, journal, or recovery options on a depot with upgrade counter = 0 will generate the informational message "Perforce db files in 'P4ROOT' will be created if missing...". #93944 (Job #14864) ** 'p4 diff -sl [ file[rev]... ]' displays unopened files with the status of 'same', 'diff', or 'missing' as each file is compared to its revision in the depot. When used in conjunction with '-f', this command may show this diff summary for all files in the file argument, including opened files. #93514 (Job #18555) ** The Spec depot now handles concurrency correctly. Multiple changes to a spec occurring at the same time should no longer result in missing revisions. #93503 (Job #20111) * ** The file types "text+C" and "text+F" are now treated by 'p4 diff2', 'p4 resolve' using merge, and 'p4 describe' as text files. Now files of these types can be compared and merged. #93286 (Job #18580, #19128) ** 'p4 depot' will not save a depot spec unless the Map entry contains a trailing set of ellipses. The trailing ellipses is the only wildcard allowed. #90843 (Job #14813) ** jobspec fields which are specified as 'always' will have the read-only nature of the field enforced by the server unless the -f flag is used. Since the server will populate these fields upon commit, any user data will be lost. This behavior can be used to prevent most job clobbering situations by including an always field of type date (e.g., a field for LastModifiedDate). #90571 (Job #19566) ** 'p4 labels file[revrange]' can block other Perforce commands that need to update the db.domain table. This problem has been fixed by early release of this table lock. #90261 (Job #19649) * p4 print -o would fail when the result file specified is a device such as /dev/null or /dev/fd/1. #89366 (Job #11188) ** Wildcards (..., *, or %%x) are no longer allowed to be right next to each other in file arguments or views. Putting them together serves no useful purpose and consumes CPU as the server tries to deal with the combinations. #89167 (Job #18182) ** Excessive use of ... wildcards in client or branch mappings (more than a few mapping lines with more than one ... in them) could cause the server to consume a lot of memory and time trying to work out all the possibilities. Generally this was not the intent of the user. Now the server has an internal limit and returns an error rather than wasting time when the ... wildcard handling gets excessive. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2005.2 PERFORMANCE IMPROVEMENTS A number of changes have been made in the 2005.2 server that should result in better performance at most sites. Optimization of head revision operations - #79472 ** This release adds a new table db.revdx which when combined with the other head revision table db.revhx (2005.1) gives faster access to the top revision required by some commands e.g. 'p4 sync'. This improvement will reduce the compute phase (where locks are taken) especially where files have many revisions. Speedup for the 'integ' command - #77216 ** The performance of 'p4 integ' has been improved by batching its updates to benefit from the internal cache and a reduction in lock requests. Depending on usage, performance can be as much as 3 times faster than previous server versions. Early release of db.working/db.resolve during sync - #84071, #85678 (Job #14146) ** Long running 'p4 sync' commands (compute phase) will no longer block 'p4 add/delete/edit' or 'p4 revert' in most cases. Server Performance Tracking - #86623 ** The p4d server now produces diagnostic output to help identify performance problems. The new support is on by default but can be turned off or adjusted with the '-vtrack=x' flag to the server. Any user commands that exceed certain thresholds for resource usage (CPU, lapse time, database I/O, network I/O, among other things) automatically get logged into the server error log P4LOG. The levels that can be set with -vtrack=x are: 0 turn off tracking 1 track all commands 2 track excess usage for a server < 10 users 3 track excess usage for a server < 100 users 4 track excess usage for a server < 1000 users 5 track excess usage for a server > 1000 users If -vtrack is not provided on the server command line or set with P4DEBUG, the tracking level is computed from the number of users listed in the server license file. The exact format of the tracking output is not documented, and subject to change. Spec depot interferes less with other commands - #86495 (Job #18939) ** Revision entries for a 'spec' depot are now kept in a separate database file db.revsx, so that long running reporting commands don't block updates to user/client/branch/etc forms. Special handling for @changelist - #85130 (Job #18689) ** The syntax '//path/file@change1,@somethingelse' now performs better in many common cases. Previously, the server would search based on changelist number or file path according to hard-coded rules. This worked poorly in a few common cases: both '//singlefile@1,@date' and '//...@5000,5001' started with the wrong search. This left users trying odd syntax to second guess the server. Now the server adaptively tries searching by change number, but if that appears to be too inefficient (more than 80% of the revisions not matching the path), it switches to searching by path. Speedup for clients with many opened files - #80624 (Job #8348, #8929, #8930, #8931, #13439, #14006, #14500, #16985) ** 2002.1 and 2005.1 special optimizations were made to avoid scans when accessing the db.have table with a depot file argument (the db.have table is keyed on the client file). This optimization has now been extended to the db.working table (also keyed on the client file), and largely eliminates the need for large scans when referring to a small set of files. Further, this optimization no longer depends on the client view and db.have table being "in sync", often referred to as "mapState 1". Now the client view is augmented upon upgrade to 2005.2 and every time the client view is changed, and so mapState has been retired. EXTERNAL AUTHENTICATION TRIGGERS - #83081 (Job #2398, #6730, #15417) ** External authentication support is built upon the 2004.2 support for ticket based authentication. When the user issues a 'p4 login' request the first trigger of type auth-check is executed, with the user's typed password on the trigger command's standard input. If the trigger successfully authenticates then a Perforce ticket is issued. Similarly, when the user issues a 'p4 passwd' request the first trigger of type auth-set is executed to set the new password (after the old one has been verified with any auth-check trigger). The user name is available as %user% to be passed on the trigger command line. UTF-16 SUPPORT - #85454 (Job #1536) * When the server is in unicode mode, clients can support UTF-16 as a P4CHARSET setting. Details in i18nnotes.txt. -------------------------------------------------------------------------- Minor new functionality in 2005.2 #86443 (Job #11924) ** When using overlay mappings, adding a file on the overlay when a deleted file is present on the non-overlay mapping would give a file name changed error. Fixed. #86149 (Job #18030) ** Jobs saved in the special 'spec' type depot are now updated automatically if their contents are changed with 'p4 fix', 'p4 change', or 'p4 submit'. The most likely automatic changes are those to the 'Status:' and 'Date:' fields. Previously the 'spec' depot was only updated by direct edits with 'p4 job'. #85670 (Job #15369) * Character set translation failures during file transfers now report a line number near the first failure. Also, we now inspect the first 8192 bytes of a file to determine if it is a likely unicode vs text or binary file. #83894 ** Job fields marked as being 'always' updated are now updated when a fix is added or deleting to the job using the 'p4 fix' or 'p4 changelist' commands, or when a changelist affecting the job is submitted with 'p4 submit'. This is in addition to being updated when the job is updated directly with 'p4 job'. Previously (but never clearly documented) the 'always' fields were updated only upon the change of status due to 'p4 fix' (with a committed changelist) or 'p4 submit'. #83599 ** The trigger names in 'p4 triggers' have been renamed so as to clarify their purpose. The old trigger names 'submit', 'content', 'commit', 'in', 'out', 'save', and 'delete' are still recognized but the new names 'change-submit', 'change-content', 'change-commit', 'form-in', 'form-out', 'form-save', and 'form-delete' are preferred. #82165 (Job #15773) ** 'p4 monitor show -e' and server log output will display a version string appended to the program name. If a client's version string is not available to the server (as set via 2005.2+ ClientApi::SetVersion()), the version string defaults to the protocolClient value. #80660 (Job #16132) ** 'p4 opened -a file' and 'p4 opened -c change' have both been optimized to avoid a wholesale scan of the db.working table. #80493 (Job #15451) ** The new 'p4 annotate -i' flag follow branches, just as 'p4 filelog -i' does. #78928 (Job #17244) * ** Unicode type files could be submitted to a depot with a leading Byte-Order-Mark (BOM) which is not translatable into any character set other than UTF-8. Now, such files will sync into other character sets ignoring leading Byte-Order-Marks. This may cause discrepancies with p4 diff -se or -sa for such files. #77727 (Job #8946) ** The new option 'p4 add/edit/delete -n' just displays the files that would be opened without actually opening them. #76458 ** 'p4 sync' now sports a '-k' option. This (keep) files option updates the server so that it appears that a client workspace already has the file(s) requested. Using this flag prevents files from being moved to the client workspace. #76292 (Job #16275) ** 'p4 revert' now sports a '-k' option. This (keep) files option clears the open file action maintained by the server but does not change files in the client workspace. #75760 (Job #8996) * Three Russian/Cyrillic character sets added. They are 'koi8-r', 'cp1251' (Windows Code Page 1251), and 'iso8859-5'. #73787 (Job #16286) ** 'p4 annotate' now sports the -db and -dw flags from 'p4 diff' et al: ignore whitespace changes, and ignore whitespace altogether. Bugs fixed in 2005.2 #101271 (Job #21127) ** Memory leak fixed. A server running with spec depot enabled or additional local depots would leak memory. Typically this would be 20 bytes for each additional depot multiplied by the number of file arguments. #99156 (Job #20905) ** Servers built with the SmartHeap memory manager (linux, windows), could require input from the user when the server was unable to obtain more memory. On linux this could happen when the server was holding locks, which (eventually) brings the server to a halt. The default behaviour has been changed so that the server does not prompt when out of memory. #94339 (Job #20192) ** 'p4 changes @changelist' could be slower in 2005.2 than it was in 2005.1 due to an optimization intended to speed up changelist ranges (@changelist,changelist). The optimization has been tuned to be no slower than 2005.1. #92200 (Job #19757) *** The proxy would not properly expand the Date and DateTime keywords for file submitted with modtimes during daylight savings times while the submit actually happened not during daylight savings or vis versa. Fixed. #91541 (Job #19576) * Temporary files were sometimes left in client workspaces by MacOS X clients. Fixed. #90419 (Job #19600) * ** 'p4 -G jobs' lost the 'specdef' field when tagged output for forms was implemented in 2005.2. Now this field has been restored. #90017 (Job #16559, #18645) ** 'p4 submit' using files with invalid or missing file modification dates will no longer cause file corruption. Instead, an error will be generated and the submission will fail. #89981 (Job #19465) * ** Add new environment variables P4DIFFUNICODE and P4MERGEUNICODE which are like P4DIFF and P4MERGE for invoking external tools from the command line except that when the file is of type unicode and the server is in unicode mode, the character set is passed as an argument to the commands those variables point to. This can allow p4merge to be invoked from the p4 command line tool on UTF-16 files successfully. #89793 (Job #19529) * Arguments to commands defined in P4MERGE or P4DIFF will no longer cause the commands to fail to execute. This behavior was due to a short-lived bug only in the beta release, and has now been fixed. #89471 (Job #19463) ** 'p4 edit/delete/add' of a file in a spec depot should not be allowed, this has been fixed. #89406 (Job #19455) ** Deleting a form when a spec depot has been enabled will result in a server crash, this has been fixed. #88299 (Job #19044) ** The server was not updating the filesize or digest for spec depot files. This has been fixed, older files can be updated by using the 'p4 verify -u' command. #86806 (Job #17563) ** 'p4 label' or 'p4 client' could cause the server to crash if the label or client name contained the "%%" wildcard character sequence. Now this character sequence is not allowed in the name of any new labels, clients, branches or depots. Any entity which already has this illegal character sequence in its name is still accessible. #86505 (Job #15937, #17684, #18435) ** p4 submit -r would leave branched files read-only while also open for edit. Now such files are made read-write. p4 submit -r should now leave open all submitted files which remain on the client after a submit. #86189 (Job #18844) * ** p4 resolve would wrongly duplicate a common insert in some cases. Fixed. #85995 (Job #18780) * 'p4 -x ' would report unknown client in the server log file for argument processing after the first 128 arguments which are run in second and subsequent commands. Fixed. #85795 (Job #17823) ** Importing from a remote depot could result in an unusable db.rev archive file. This would require a certain combination of multiple integrations where the last is an ignored local depot file. Subsequent access to the newly submitted revision would result in the error "Can't map //remotedepot/filename to archive!". This has been fixed. #85674 (Job #18652) ** An integrate command may miss that a delete needs to be integrated when there are multiple levels of indirection between the source and target. Fixed. #85630 (Job #18819) ** A narrow performance problem involving labels, the "*" wildcard, and directories with lots of subdirectories has been fixed. #85445 (Job #18053, #18433) ** 'p4 -R' now works with marshalled input from Ruby 1.8.x #84221 (Job #13451) ** A revision specification of @change,change against a remote depot works again. For a long time using a change number in the revision syntax for remote depot files would use the local change index against the remote files. Now it filters remote files using their own change numbers. #84221 (Job #18441) ** A revision specification of pattern@1,@date now uses a lot less memory, related to the number of files matching 'pattern' rather than all files since change 1. #81300 (Job #17199) ** Really long arguments (>2048 bytes) to 'p4 dirs' could crash the server. This has been fixed. #80547 (Job #17798) ** 'p4 logout -a' now removes the ticket stored on the client as well as the ticket stored on the server. #80127 (Job #17727) ** 'p4 logout' can now be executed if the user has a valid ticket but it has expired. Previously the user would have to run 'p4 login' first. #76684 (Job #16957) ** 'p4 fstat' now accepts multiple -O and -R flags. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2005.1 PERFORMANCE IMPROVEMENTS A number of changes have been made in the 2005.1 server that should result in better performance at most sites. Speedup for the 'dirs' command - #69248 (Job #7068) ** The performance of the 'dirs' command is now no longer affected by the number of files deleted at their head revision. Since the 'dirs' command is used by GUIs such as P4V and P4Win, browsing through portions of the repository with files deleted at their head revision will now be faster. This speedup uses the new db.revhx table. Speedup for the 'obliterate' command - #72594 (Job #15047) ** A number of changes have been made to reduce the fixed overhead of 'p4 obliterate'. Now the overhead is more or less relative to the number of clients and labels, rather than the size of the clients and labels. Also improved is the handling of lazy copies in that obliterating a revision that is the source of many lazy copies no longer creates many revisions in the versioned files tree. This speedup uses the new db.archive table and leverages the MapState simplification (see below). Btree passive reorganization - #68043 ** As updates are made to the db.* tables, the server now reorganizes portions of the table as necessary to maintain sorted order across contiguous leaf pages. These passive reorganizations will result in better performance when scanning portions of the table since physical movements of the disk heads will be reduced and readahead will be more effective. This feature should reduce the need to periodically recreate the db.* tables from a checkpoint to improve performance, but may increase the size of some of the db.* tables due to the allocation of new contiguous pages. MapState simplification - #72631 ** Using depot syntax for a number of commands ('p4 sync', 'p4 have', 'p4 fstat') has been sped up considerably in certain cases. Previously, such commands were fast only if the client workspace was 'in sync' with its current client view. This limitation no longer applies. Now the results of the first scan after changing the client view are used to avoid further costly scans, whether the client is in sync or not. SPEC DEPOT - #69793 (Job #250) ** A new depot of type 'spec' archives all edited forms (branch, change, client, depot, group, job, jobspec, protect, triggers, typemap, and user) into special, read-only files in that depot. The files are named //specdepot/type/name[suffix]; suffix is optionally given as the 'Suffix:' field on the depot form. The archived forms can be accessed as any other file, but there is no special provision for using the forms, other than using the form-specific command's -i flag (e.g. p4 client -i). Automatic updates to a form, such as access times, opened files (for changes), status (for jobs), etc, do not change the saved forms: only those made through the regular form editing commands. The spec depot was introduced as undocumented functionality in the 2003.2 release, but is now fully supported. PARTIAL FILETYPES - #68575 (Job #594, #4003, #6562, #6742) ** The filetype given to 'p4 add', 'p4 edit', 'p4 reopen', and 'p4 typemap' can now be just a partial filetype, with the '+modifiers' only. A partial filetype modifies rather than replaces the default one. For example, if a text and binary file are added to a location in the repository covered by a typemap entry specifying a partial filetype of '+l', the text file is added with a filetype of 'text+l' and the binary file is added with a filetype of 'binary+l'. See 'p4 help filetypes' for additional information. DELETE TRIGGERS - #68258 (Job #15235) ** Complementing the spec triggers introduced in the 2004.2 release is a new spec trigger type of 'delete'. This trigger will run prior to deleting the spec. A delete trigger can be used to limit when a spec is deleted. For example, a delete trigger can be used to prevent unauthorized users from deleting jobs. -------------------------------------------------------------------------- Minor new functionality in 2005.1 #72238 ** 'p4 verify' has a new flag '-m maxRevs' which limits the number of revisions which can be verified. Using this option may require several iterations before each revision has been processed. As of change #70719 newly submitted files will have the length maintained by the server. Previous revisions will have their length computed when running verify with either the '-u' or '-v' option. It is recommended for a large repository where this update could take a long time to use the '-m' option when updating the metadata for the first time after upgrade. #71026 (Job #15880) ** 'p4 filelog' has a new flag '-L'. This option produces long output with a 250 character truncated changelist description. #70950 (Job #15791) ** 'p4 changes' has a new flag '-L'. This option produces long output with a 250 character truncated changelist description. #70906 (Job #14912) * Allow the ticket file location to be configurable. The user can now define the location of the file used by 'p4 login' and subsequent connection attempts by setting the environment variable P4TICKETS. This variable, like other Perforce variables can be set at the command prompt or set in a P4CONFIG file or as an NT registry variable through 'p4 set'. e.g setenv P4TICKETS /secure/myname/ticketfile (UNIX csh) p4 set P4TICKETS=c:\secure\myname\ticketfile.txt (NT) #70719 (Job #15844) ** The server now maintains the filesize in the metadata, this makes the 'p4 fstat' option '-Ol' much faster. #70543 ** Remote depot access for 98.2 and 99.1 servers has been dropped. #70419 (Job #15810) ** 'p4 fstat' has a new flag '-Of'. When this option is selected all revisions for the given file(s) are displayed. #70345 ** Some commands have now been given synonyms: synonym command -------- ------- changelist change changelists changes workspace client workspaces clients Either name will be accepted, however errors and form fields will continue to refer to the original command name irrespective of what name the command was executed with. #69880 (Job #15693) ** 'p4 fstat' adds 'desc' (change description) to its list of output fields. This field will only be displayed when the option to display files affected by a given changelist number '-e changelist#' is specified. #69803 (Job #15676) ** 'p4 opened' has a new flag '-C client' which limits output to files opened by the specified client. #69639 (Job #15599) ** 'p4 fstat' adds 'otherChange#' to its list of output fields. This field will only be displayed if the file is opened. #68917 (Job #15484) ** 'p4 fstat' adds 'digest' to its list of fields that are output. This field will only be displayed when the '-Ol' option is used. Bugs fixed in 2005.1 #89300 (Job #19381) ** A Perforce server running with monitor enabled could encounter problems with a multi-threaded client issuing overlapping requests on the same server connection. Under certain conditions this could lead to a server crash. This has been fixed. #86943 (Job #18960) ** Under rare circumstances a btree passive reorganization may fail with an 'insert failure'. Fixed. #86558 (Job #18951) ** Using mmap (memory mapped) file access for the server platform AIX 5.3 has been disabled due to a problem with that O.S. implementation. #82815 (Job #17328) ** Servers running on some versions of Linux prior to 2.6.11 could be prone to seeing sporadic zombie processes. Although this is a Linux kernel bug this change provides a workaround for those customers who cannot obtain a later release of the fixed kernel. #82100 (Job #18091) ** Failure to archive forms to the 'spec' depot were not being reported to the client application, this has been fixed. #81216 (Job #17960) ** Job fix #80169 (update db files) could be executed for each database access instead of once. Although this update should not pose any problems it could slightly affect performance. This has been fixed. #81207 (Job #17909) ** 'p4 verify -q' would not detect a missing archive file if the digest had already been computed and saved. This has been fixed. #80631 (Job #17752) * ** p4 resolve or merge tools when 'accept theirs' is chosen could leave a file which did not match the server's version of the theirs file. Bad auto merges are also possible. Fixed. #80628 (Job #17822) ** Upgrading to 2005.1 from a release older than the previous 2004.2 release could result in an incorrect value for a files size being reported (p4v, p4ftp). This has been fixed. #80169 (Job #17732) ** Upgrading to 2005.1 (this release) when the server's db files were created originally by a p4d version prior to 2001.1 and which a checkpoint has never been recovered by a server version 2001.1 or later will have database update problems. Fixed. Once this fixed server is run, you can not run older 2005.1 servers without a checkpoint recovery. #79941 (Job #17691) ** p4 filelog -i would show details of files for which the user has no permissions if those files were branched to files the user has access to. Now, filelog -i will silently not visit ancestor files which the user does not have permission to inspect. #79498 (Job #14978) ** Application-licensed servers cannot be accessed remotely. This has been fixed. #79322 (Job #16613) ** For certain client views 'p4 labelsync' could repeatedly delete and add the same file each time its executed. #78873 (Job #13509) ** On some platforms (linux) with 'monitor' enabled the command 'p4 admin stop' could hang the server. This has been fixed. #77879 (Job #17233) ** Indirect Integrations involving recently branched files which are then deleted via integration might stop propagating the delete via indirect integrations. #75719 (Job #16806) ** Under certain circumstances and on particular server platforms (Solaris) the 'Options' field of a Perforce client could get corrupted when being displayed. This has been fixed. #75711 (Job #16482) ** 'p4 -Rc -e #changelist' could take a long time if the client view prevented any of the files in the changelist from being mapped. This has been fixed. #74983 (Job #16300) ** 'p4 job Job' against an NT server would override the same storage used by 'p4 jobspec'. #74847 (Job #14524) ** 'p4 tag' would create labels with uninitialized access and modification times. This has been fixed. #74432 (Job #16478) ** Indirect integration credit was missed in certain combinations of a copy from and a branch from a common ancestor. #74228 (Job #16031) ** 'p4 fstat -W' has been speeded up by removing the redundant db.have client file scan. #73742 (Job #16342) ** 'p4 fstat -e #changelist -W' on some platforms would fail to return the files opened in that changelist. This has been fixed. #73518 (Job #16238) ** The filetype option 'apple+k' would fail in previous versions with the error "AppleSingle/Double corrupted". This failure was due to an incompatibility between the apple resource fork code and the RCS keyword substitution code. This combination is prohibited and is now rejected when trying to set it rather than after submit. #72937 (Job #15917) ** Indirect integrations might schedule deletes without the -Ds or -d flags when such flags would be needed. Fixed. #72512 (Job #15583) ** Revisions for a 'group' stored in the spec depot did not contain all the users added to that group only the last ones added in the last update. This has been fixed. #72406 (Job #15933) * On Windows clients operating with character set UTF8 use Unicode Windows APIs to get user related environment variables and allow Perforce variables to supply these environment values. #71608 (Job #15942) ** Indirect Integration credit was not given for all paths when more than one credit path shares intermediate credit paths indirectly resulting in some unnecessary integrates being scheduled or base files for merging which are older than needed. Fixed. #71169 (Job #15712) ** The 'Timeout' field which can be set by 'p4 group' was not allowing a value of 0 (no timeout). This has been fixed. #70975 (Job #11839) ** Starting p4d as a service on NT would fail if upper case was used for the executable name. Fixed. #70890 (Job #15719) ** 'p4 integ' would schedule integrations which are not needed when the source was a copy integration from a third file which was edited into the target. #69841 (Job #15602) ** A trigger on 'p4 change' wouldn't fire on 'p4 change -s', which is used by p4win. Now it does. #68886 (Job #15469) ** 'p4 login' IP based tickets would not work against a central authentication server. This has been fixed. #67888 (Job #15265) ** If a post-submit trigger fails then the server can incorrectly issue the message "Submit validation failed -- fix problems then use 'p4 submit -c '". If no ktext files are refreshed during the submit then no error message is seen at all. This change fixes both these problems. #67042 (Job #15175) ** p4 sync #none no longer changes permissions on symlink target files (Mac OS X and Darwin only). -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2004.2 SECURITY LEVEL (Authorization and security levels) The new security features introduced in 2003.2 but undocumented are now fully supported. Most of the changes are built upon the existing system which when used correctly provide adequate protection for most development environments. However, this system did not provide for password enforcement, password strength enforcement and allowed unsafe practices to be established. 2004.2 introduces the concept of a perforce server security level, basically the higher the level the greater level of enforcement. In some cases enforcing a greater security level will make the usage too restrictive for some sites where it simply isn't necessary. The new security features do not offer native data encryption. As in previous versions, Perforce recommends SSH or VPN as a means of access over insecure networks. Setting a security level: To provide backwards compatibility the default setting for security allows similar authorization as previous versions. To set a security level in the server a super-user must set the new 'security' counter into the system: e.g. p4 counter -f security 1 (server must be stopped/restarted) The following is a list of the values and their action. security feature/function 0 (unset) * 'p4 login' support. 1 * 2003.2+ clients enforce passwords * 2003.2+ clients require strong passwords 2 * cannot modify password through 'p4 user' * cannot modify password through 'p4 passwd -O -P' * pre-2003.2 clients cannot set password * pre-2003.2 clients cannot use login * unverified strength passwords must be changed * passwords no longer stored/retrieved from registry (NT) 3 * 'p4 login' tickets are the only way to connect to a server, passwords are no longer accepted. NEW LOGIN/LOGOUT COMMANDS PROVIDE PERFORCE ACCESS THROUGH TICKETS The new 'p4 login' command allows a user to establish an authorized connection to the Perforce server by a ticket granting mechanism. A session can be terminated by issuing a 'p4 logout' command. See 'p4 help login/logout' for usage. New field 'Timeout' in 'p4 group' 'p4 group' now has a 'Timeout' field, which can be used to change the default (12 hours) login timeout value for a group of users. This value represents the number of seconds that an issued ticket from the server will be valid for. NEW TRIGGER SUPPORT (mid-submit, post-submit and forms) (Job #796, #1651, #9738, #10536) 'p4 triggers' now supports mid- and post-submit triggers in addition to the existing pre-submit ones. mid-submit triggers happen after file transfer and use a limited set of commands to access the file content via the special revision specification @=change, where change is the pending changelist number. post-submit triggers happen after the commit and therefore cannot stop the operation. (Job #1651, #1929, #11861) Also, 'p4 triggers' supports triggers on all forms (like 'p4 branch' and 'p4 user'). There are three triggers available: 'out', 'in', and 'save'. An 'out' trigger is run when the form is generated; an 'in' trigger is run when the form is being saved, but before the server parses it. Both 'out' and 'in' can modify the form. A 'save' trigger is run after the form is parsed and validated by the server. A 'save' trigger cannot modify the form. NEW INDIRECT INTEGRATION DEFAULT 'p4 integrate' now always considers indirect integrations through intermediate branches when determining that files are related and what changes need to be integrated. The direct/indirect option in branch specifications has been removed as all integrations will be considered indirect. Related is that 'p4 integrate' may select a base for merge resolution from a common ancestor which is neither the source nor the target file. NEW SMART RESOLVE LOGIC Conflict resolution with 'p4 resolve' has been changed. The new logic reduces conflicting regions with more complex detection of commonality of changes. FILEPATHS THAT CONTAIN CHARACTERS @#%* CAN NOW BE ADDED TO DEPOT (Job #1339, #13270) Previously the special characters "@#%*" could not be included in a file submitted to the repository, instead an error would be generated. As of this release the Perforce command 'p4 add -f' will allow these special characters to be included as part of a filepath. Without the '-f' option an error message will be generated for files containing wildcards. Once added these files can only be referred to in their formatted syntax. For example 'p4 add foo#bar' will result in a file being submitted under the formatted name 'foo%23bar', notice that the '#' gets translated to its ascii hexadecimal represented value '%23'. The syntax to edit the file once it has been submitted would therefore be 'p4 edit foo%23bar'. Perforce commands like 'p4 have' and 'p4 fstat' will show both formatted and local (filesystem) names. These filenames will of course be expanded back to their original submitted name when synced down onto client machines. Note that due to this change, the wildcard %d used in reordering filepaths in viewspecs has now changed to %%d. NEW TAG COMMAND PROVIDES EASY WAY TO ASSIGN A LABEL TO A FILELIST (Job #9903) Similar in syntax to the more advanced 'p4 labelsync' command 'p4 tag' allows the user to tag files with a label without requiring a client spec. See 'p4 help tag' for further details. -------------------------------------------------------------------------- Minor new functionality in 2004.2 #58026 (Job #13343) ** 'p4 fstat' has two new flags. The '-O' flag used to request extra information that is usually suppressed and the '-R' flag that is used to restrict output depending on certain criteria. A number of old fstat flags have been folded into these new options. See 'p4 help fstat' for details. #56674 (Job #11929) ** 'p4 integrate -Di' allows the integrate command to find a base for file merge prior to the latest add of the source file. That is if a source file was deleted and recreated (via add or a branch) those revisions prior to the add could provide a base for integration. This is intended to support cases where files are deleted and re-added but still maintain content continuity across the delete. #56035 (Job #13380) ** 'p4 submit -r' now supports reopening of files that have been branched. #56034 (Job #413) ** The 'p4 integrate' command can now determine if a base for merge resolution lies on any ancestor version even if that version is a file which is neither the source nor the target. The base file and version is reported by a change in the output of 'p4 integrate', 'p4 resolve', and 'p4 resolved' if a '-o' option is given with those commands. #55851 (Job #3757, #9034, #10740, #11631) ** The new 'p4 integrate' default of considering indirect integration history allows the command to refuse baseless merges while considering indirect integrations when the -i and -I flags are not supplied. Changes to help descriptions and spec descriptions and problems regarding integrate and branch are corrected. #53703 (Job #13258) ** 'p4 fstat' has a new flag '-e #changelist'. When this option is selected only files that are affected by this changelist are displayed. #53137 (Job #13259) ** 'p4 fstat' adds 'type' to its list of output fields, this field will only be displayed if the file is opened. #52894 (Job #13184) ** 'p4 labelsync' is now atomic in its update of the label table. Previously if a user issued a 'p4 sync //...@labelname' command during a labelsync operation (of the same label) it could be possible to get an inconsistent sync. #52329 * ** Files stored as compressed binary (most binary files) are now left compressed over the wire and uncompressed only when they reach the client. (Previously, they were uncompressed on the server and sent to the client that way.) This new behavior is not optional, and is unaffected by the client's "compress" option, which continues to compress all data between the client and server. #51751 (Job #12737) ** 'p4 monitor' now sports a '-e' flag to allow superusers to see more about a users environment. The '-e' flag adds the client program name (if known), client name and host address to the list of fields displayed. #50570 * P4CHARSET now supports iso8859-15 which is essentially latin-1 with the Euro currency symbol. #50459 ** Overlay (+) mappings are now supported in client views. This allows a client to overlay a sparse tree from the depot on top of a denser on already mapped on the client. Overlay mappings are specifically prohibited in branch views, and have no special effect in label or other views. Bugs fixed in 2004.2 #81443 (Job #17890) * ** During change resolution via p4 resolve an 'accept theirs' could leave a file on the client which does not match the server's original 'theirs' file. #80025 (Job #17695) * ** Problem with resolve/merge duplicating code when the base file has extra lines at the end that the source and target file do not has been fixed. #79733 (Job #17654) ** Triggers were inheriting too many handles from the server process on Windows and could exhaust a system wide handle resource limit. Critical handles no longer inherited. #79315 (Job #17399) * P4 clients on MacOS X which change files not owned by the user who runs the p4 client may encounter crashes and many temporary files left after the crash. Error messages will now be produced. #76944 (Job #17078) ** Prevent server from exiting prematurely on encountering a lock upgrade problem. #76880 (Job #16991) * ** Resolve logic to expand common change regions could cause crashes or bad merges. Changed to only rarely expand common changes when changes align at start. #76510 (Job #16959) ** 'p4 fix' of a job against a nonexistent changelist could result in a server crash. This has been fixed. #74828 (Job #16596) ** Resolve might cause a server crash or repeat the whole file contents as a conflict in rare cases. Fixed. #73359 (Job #16118, #16425, #16248) ** Job fix #72493 introduced another possible crash. Revised that fix to avoid the crash. Diffs may report slightly differently with this revised fix. #73084 (Job #16205) ** With maxResults or maxScanRows set with 'p4 group', changing your client view to map files to a different location could result in being unable to refer to existing files in the client workspace using depot syntax (//depot/name). This has been corrected. #72935 (Job #15831) ** Trying to sync a compressed binary file from a pre-2004.2 remote server would result in the error: "Operation 'rmt-FileFetch' failed. Unsupported librarian file type 7!" This has been fixed. #72642 (Job #16141) ** Integrate might miss files which need integration when there is a mix of cherry picked integrations and those which are not in intermediate integrations when searching for indirect integration credits. Fixed. #72638 (Job #16142) * ** Resolve might not detect conflicts when the two files have a change which starts as a duplicate, becomes a conflict, then one file has a change. Fixed. #72493 (Job #16118) * ** Resolve might cause the server to crash. Crash was due to reading past the end of the yours file. Fixed. #71759 (Job #15968) * ** The new resolve logic might cause the server to crash. Would happen on very complex merges with overlapping changes and similar regions. Fixed. #71497 (Job #15930) * ** The new resolve logic might loop consuming all CPU in the server or merge tool when the two files being merged are substantially the same but with many small fragments in common with the base. Fixed, but more cases may be reported as conflicts than before this fix. #71324 (Job #15597) ** The variable '%change%' for submit triggers is no longer available. This change corrects this omission. #70948 (Job #15867) * ** The new resolve logic might loop consuming all CPU in the server or merge tool when blocks of lines are shuffled with few actual new lines or lines really removed. Fixed. #70343 (Job #15751) * ** The new resolve logic might drop a line in the following situation: * There is a change common to the 'theirs' and 'yours' files. * Just after that change a line in all files matches a line at the end of a change in one but not both of the 'theirs' and 'yours' files. When this problem happens that common line is lost at end of the insert block which is not common. Servers with versions between 69424 and this fix actually reported a conflict in this case and the conflicting base case would report lines already merged. Fixed. #70281 (Job #15756) ** 'p4 obliterate' cannot distinguish between an already deleted archive file and failure to undo a lazy copy due to lack of disk space, this can lead to archive data loss. This has been fixed by backing out change #45574. #69739 (Job #15657) ** 'p4 monitor show' could crash the server on SGI due to large pid value. This has been fixed. #69731 (Job #15606) ** Client server would deadlock with the server on a Linux machine. Reverted change 55835 so that we once again look at the OS TCP send buffer size rather than the receive buffer and we reduced the maximum expected amount of returned data to 16000 bytes. (himark limit) #69727 (Job #15656) ** Integrations with source revisions ranges specified (so called cherry picked integrations) might choose the base on the target file instead of the source file. Fixed. #69643 (Job #15640) ** The handling of 'p4 sync @=changelist' accidentally changed to cause files not in the changelist to be removed from the client. This syntax is used by p4win to speed up syncing a single change. Now 'p4 sync @=changelist' again means the same as 'p4 sync @changelist,changelist' as it should, and only affects the files in the given changelist. #69424 (Job #15425) * ** The new resolve logic could report conflicting regions as too small and those lines would appear to not be conflicting. If that happened, sometimes lines would also be omitted from the end of the file. #69124 (Job #15538) * Due to an inconsistent implementation of a specific system call on LINUX, it was possible for p4 clients such as p4v to consume lots of CPU and appear to hang. This has been fixed. #69080 (Job #15502) * ** The new resolve logic could duplicate lines in the result if accept theirs were selected interactively from a client. Fixed, however there may be minor differences in the report of fragment counts regarding differences during result and differences in reported common lines. Standalone GUI merge clients are affected. #65225 (Job #13257) ** The Perforce Windows Service now shuts down normally during a system reboot. Before it was terminated by the Service Control Manager. #62199 (Job #11561) ** 'p4 -G job -o' and 'p4 -R job -o' failed if the jobspec contained required fields that deliberately defaulted to invalid values. This has been fixed. #61038 (Job #14462) ** Saving a client spec with view arguments to depots which the user has no access (i.e. no 'list' access or better as granted by 'p4 protect') could cause the server to crash. #60787 (Job #14431) ** Some passwords greater than 16 characters would not be recognized after being set by the user. This has been fixed. #60299 (Job #14461) ** The server will now recognize a license file called "license.txt" as well as the default one "license". This will make installation easier on Windows platforms where often the file has to be renamed before the server can be started correctly. #59047 (Job #13954) ** Archive files with redundant versions of revision text and ancestral revisions of such a revision can be read properly. #58393 (Job #7096, #11534) ** Mac OS X now uses Unix permissions instead of HFS locking to prevent edits to a file. If it detects a file has the HFS lock set, it will convert it to the new system. HFS locks will never be set by Perforce. #58391 (Job #13639, #13640) ** Syncing or opening links for edit will no longer change the flags on the files pointed to by the link, but will affect the link itself. Mac OS X only. #58964 (Job #14229) ** Archive files with missing revision contents but revision listed in archive header will no longer crash the server. #57966 (Job #14141) ** Jobs with empty names can no longer be created (but they can be deleted). #57268 (Job #13931) ** 'p4 login' tickets would not work against a proxy server, this has been fixed. #57034 (Job #13096) ** After 'p4 verify -u' had been used against the revisions in a spec depot, all new revisions would be reported as 'BAD' by 'p4 verify'. This was caused by the server incorrectly reusing the checksum of the previous revision. This fault has now been fixed. #57029 (Job #4796) * Client connections would fail if P4PORT specified a hostname starting with a digit. This has been fixed. #56972 (Job #13803) ** 'p4 dirs' is no longer limited by the number of directories it can report. #55835 (Job #13364) ** Client server would deadlock if the server's operating system reported more TCP buffer space available than was really available typically happens if a server has been configured with very large TCP buffers. p4d is now more conservative and tries to keep less than 30000 bytes expected in its receive buffer. Also, measure the OS TCP receive buffer rather than the send buffer for this setting (himark limit). #55389 (Job #13628) ** Under certain conditions where old tempobjs and new tempobjs were being submitted together it was possible that some of the new tempobj archive files would not be deleted. This has been fixed. #54731 (Job #13279, #4104) ** During a 'p4 submit' operation it was possible for another Perforce client (same P4USER, same P4CLIENT) to interfere with the operation by (for example) reverting files currently being submitted. Checks have now been put in place that make sure that this cannot happen. Should such a change be detected 'p4 submit' will issue the error message "Files newly opened or reverted during submission" and abort. #54050 (Job #13346) ** Missing '%' character in a 'p4 triggers' command string could cause a server crash during a submit. This has been fixed. #53436 (Job #13228) * ** Text file diffs would rarely produce non-optimal diffs on small files with short lines. #51219 (Job #12789) ** Merely adding or removing a "-" to the mapping of a trigger table line of 'p4 triggers' would fail to be recognized as a change to the table. This has been fixed. #50451 (Job #1445) ** By remapping a file opened for edit to another depot file, and then syncing that depot file using depot syntax, it was possible to forget that the file was opened. This has been fixed. #50435 (Job #2127) * ** 'p4 diff2' now always displays '' to indicate "no file". Previously '< none >' was used on the left side. Users requiring the old behaviour for scripts or applications can set the protocol variable "api" to a pre 2004.2 value for example -Zapi=56. #50078 (Job #13730) ** 'p4 client' and similar commands that edit specs could cause a server crash if a view argument was preceded by a double-quote with no matching end quote. This has been fixed. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2003.2 Performance Improvements 2003.2 incorporates a number of changes addressed at the performance of large installations. While these changes were tested against a server of 1M files they should, of course, benefit all servers to some degree. Optimization for frequent syncs - #47694 ** A narrow optimization was made for large client workspaces that do frequent 'p4 sync' commands, typically automated build or test client workspaces. The syntax 'p4 sync @changelist,#head' now makes use of a database index to make its speed related to the number of files affected since the named changelist, rather than the number of files already in the client workspace. To take advantage of this, scripted build or test clients must remember a recent changelist number and sync to changes since that changelist. The provided changelist can be earlier than that previously synced, but the closer it is the faster. This optimization is targeted towards automated client workspaces, because they are in a position to track a recent changelist number. Further, interactive users typically don't sync all of a large client workspace at once. Label use speedups - #47813, #47771 (Job #11540, #7225) ** Specifying revisions using file@label,label, where the label doesn't contain the named file, no longer causes quadratic behavior. Specifying revisions using @label, where the label doesn't contain revisions from a remote depot, will no longer access the remote depot. Locking and memory use improvements - #47939, #47402, #46797 (Job #9893) ** Concurrency and memory use on 'p4 sync' and 'p4 integrate' have been improved by freeing up temporary resources earlier. Subtle database locking improvements have been made. Previously, any command that could expect a revision specification locked tables (such as db.have and db.label) in anticipation of needing them. Now they are only locked if the command actually makes use of them by including a @client or @label revision. 'p4 sync' now batches its updates to benefit from the internal cache and reduce lock contention. Speedups for large client views and protections tables - #48061 ** Large client views or protection tables should no longer slow 'p4 sync' or 'p4 integrate' quite so severely. Indirect integration much faster - #47038 (Job #10587) ** Performance of 'p4 integrate -I', which looks at intermediate integrations when determining a base, has been significantly improved. Its performance should now be similar to the normal direct integration only case. Minor new functionality in 2003.2 #50484 ** 'p4 annotate' now sports a -c flag: output change numbers instead of revision numbers with each line of the file. #48532 (Job #11969) ** Depots to which the user has no access (i.e. no 'list' access or better as granted by 'p4 protect') no longer show up in the output of 'p4 depots'. Nor do they appear in the default branch, client, and label views. #47719 (Job #2696) * ** The MD5 digest (fingerprint) of files are now computed and stored during submit. For best performance, use both a new 2003.2 client as well as server, as the new 2003.2 client programs offload the MD5 computation from the server. #47373 (Job #11639) * 'p4 diff -db|-dw' now ignores line-ending differences as well as whitespace. This is very useful when used in a mixed platform environment. #46947 (Job #4654) * 'p4 diff' can now ignore line-ending differences when used with the flag "-dl". This is very useful when used in a mixed platform environment. #46649 ** 'p4 integ' has an additional option -D, which allows the user to specify whether source or target deleted revisions are okay to integrate around. See 'p4 help integ' for further details. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2003.1 2003.1 includes a number of as yet undocumented internal changes required for versioning and configuring of p4 specs. NEW MONITOR COMMAND DISPLAYS STATUS OF RUNNING P4 PROCESSES - #41063 (Job #2931, #9889) ** The new 'p4 monitor' command displays the status of current running p4 processes. It is functionally similar to the UNIX 'ps' command. A perforce administrator can also use monitor to terminate long running processes. See 'p4 help monitor' for usage. Minor new functionality in 2003.1 #43840 (Job #5547) * ** 'p4 resolve -a' of a binary file where either "yours" or "theirs" has changed from the base now does an automatic "accept theirs/yours", a conflict will still require manual selection. Interactive resolve will now suggest "at/ay" as appropriate. #39123 (Job #9887) ** The new option 'p4d -c command' runs the command while the database tables are locked. #38864 (Job #3224) ** 'p4 changes' has an additional option "-t" when specified will display the time as well as the date. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2002.2 INTEGRATE ACROSS DISTANT BRANCHES - #35537 (Job #413, #9323) ** 'p4 integrate' now fully handles merging changes between branches that don't have a direct parent/child relationship. This occurs often when, say, both a release line and a development line are branched from a main line and changes must be merged directly from the development line to the release line. Previously, users had to rely on instructions in technical note #9 to ensure that the Perforce server chose the right base revision for merging. Now an updated option to 'p4 integrate' does the work. The '-I' option looks for "indirect" integration history through intermediate files when determining the base for merging. This makes it able to handle files distantly related by branching, not just those with a direct parent/child relationship. The new branch option 'indirect' implies 'p4 integrate -I' for the branch, so that it need not be passed on the command line. While it is harmless to use the '-I' flag for directly related branches, it is slower. See 'p4 help integrate' and 'p4 help resolve' for updated descriptions of their operation. NEW ANNOTATE COMMAND SHOWS HISTORY OF LINES IN A FILE - #35149 (Job #574) ** The new 'p4 annotate' command displays the lines of a file along with the number of the revision that introduced each line. It is functionally similar to the CVS annotate command, except that it has the option to show deleted lines and note both the revision of introduction and deletion. See 'p4 help annotate' for usage. SHARING CLIENTS USING MULTIPLE CLIENT ROOTS - #34879 (Job #4471, #6200, #6243, #6275, #6521, #7268) ** Client workspaces that are shared across multiple platforms can now be better accommodated by the ability to specify multiple client roots. If the same workspace is accessed from different hosts, the same set of client workspace files can appear with a different root directory. Previously, only one root could be given in the client spec, and the user had to change it manually as he moved among platforms. Now 'p4 client' supports up to three (3) client roots, one main (named "Root") and two alternates (named "AltRoots" ). The client's current working directory is tried against all three, and the first one that matches is used. If none match, the main is used anyhow. 'p4 info' reports the applicable root. This support allows for client roots shared via multiple UNIX paths with symlinks, shared via NFS or Windows shares, or even between MacOS Classic and MacOS X. When used with the 'p4 client' LineEnd 'share' option, client workspaces can be effectively shared between UNIX and Windows. See 'p4 help client' for details on using multiple client roots. SPRUCING UP DIFFS The various commands that diff files have seen some enhancements to make them more compatible with the GNU diff and patch programs. Ignoring whitespace - #31144, #31078 (Job #879, #1671, #1932) * ** 'p4 diff', 'p4 diff2', 'p4 describe', and 'p4 resolve' now can ignore whitespace changes, as the GNU diff does. The -db flag ignores changes in horizontal whitespace, and the -dw flag ignores horizontal whitespace altogether. 'p4 resolve' also passes the flags to the diff option in resolve dialog. Note that 'p4 resolve' will use text from the client (aka "yours") file where the files differ only in whitespace. 'p4 diff' requires a p4 client upgrade; 'p4 diff2' and 'p4 describe' require a p4d server upgrade. 'p4 resolve' requires both. Patch-friendly output - #35143 (Job #380) ** 'p4 diff2 -u', which produces more patch-friendly output, is now supported. It has long been present but undocumented. TEMPOBJ FILETYPE REDUX - #36061 (Job #1025, #2642, #3888, #7775) ** The 'tempobj' filetype, which stores only the head revision of the file (to conserve space), has been reimplemented to remove some of the serious problems associated with using this filetype. It is now safe to use. Previously, the server knew there were multiple revisions but they all shared the same text. This created problems with 'p4 submit' (aborted submits would update the text anyhow), 'p4 verify' (the revision fingerprint would change), 'p4 sync' (syncing a non-head rev would still give the head rev's text), and 'p4 obliterate' (obliterating the non head rev would remove the head rev's text). Now the server associates text with each revision (just as with non-tempobj files) and goes through the extra step of purging the previous revision during 'p4 submit'. 'p4 filelog' will display non-head revisions as 'purged' and they are treated like a deleted revision: 'p4 sync' will remove the file on the client and 'p4 verify' will ignore them. With this change, the filetype modifier "+S" changes from a storage type (uncompressed binary with only the head rev stored) to a storage modifier (purge non-head revs). Any type of file (text, binary, compressed) may now take on the "+S" modifier. The filetype modifier "+M", which previously indicated compressed binary with only the head rev stored, has been supplanted by +S's new meaning. This table might make it clearer: keyword pre-2002.2 2002.2 -------- ---------- ----------- tempobj binary+Sw binary+FSw xtempobj binary+Swx binary+FSwx ctempobj binary+Mw binary+Sw +F = uncompressed +S = binary head-rev only (pre-2002.2) +S = purge non-head-revs (2002.2) +M = compressed binary head-rev only (pre-2002.2) +w = client file always writable (all tempobjs) +x = executable bit set on client The 2002.2 server will upgrade existing tempobj files to the new. This requires a database upgrade with 'p4d -xu'. NEW PROTECTION LEVEL FOR SEMI-SUPER USERS - #35832 (Job #3037, #1306, #2842, #3520, #5004. This change only tangentially addresses some of these bugs.) ** A new 'p4 protect' level 'admin' has been introduced below 'super' to permit many administrative commands without granting total superuser access. The commands now requiring only 'admin' access are: p4 branch -f p4 change -f p4 client -f p4 job -f p4 jobspec p4 label -f p4 obliterate p4 typemap p4 unlock -f p4 verify The commands still requiring 'super' access are: p4 admin p4 counter -f p4 depot p4 group p4 jobs -R p4 passwd user p4 protect p4 triggers p4 user -f Minor new functionality in 2002.2 #36081 (Job #6881) ** "p4 resolve" now writes its messages through the methods of the ClientUser class rather than directly to stdout to allow API users to capture and parse the output. This change is only relevant to API users. #35972 ** 'p4 resolve' now recognizes if the resulting file has been edited to match either 'yours', 'theirs', or the automatically merged result, and changes its default suggested action appropriately. In this way, if an external merge tool produces exactly 'theirs' then 'p4 resolve' can still arrange for a lazy copy in the server. #35391 (Job #13, #4974) ** 'p4 describe' of a pending changelist now includes the affected files. This fixes our oldest open bug. #35390 ** The new option 'p4 revert -n' just displays which files would be reverted without actually reverting them. #35368 (Job #409) ** Long running operations that have been canceled by the client can now be detected and terminated in the server. This feature may not be available on all platforms. #35145 ** The new options 'p4 files -a' and 'p4 print -a' display all revisions in a revision range, rather than just the highest revision. #35114 (Job #553) ** 'p4 filelog' has an additional option "-t" when specified will display the time as well as the date. #35063 * Adding support for Mac OS Roman character set in i18n mode. To use, set P4CHARSET to "macosroman". #34972 (Job #9359) ** p4 info now displays the offset from UTC of the server timezone numerically and with a symbol if the symbol supplied from the OS is ASCII. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2002.1 Internationalization (I18N) and Localization (L10N) Release 2002.1 incorporates the I18N and L10N changes that went into the 2001.2 release (made available only in Japan). As of 2001.2, the Perforce clients and server have an optional mode of operation where all metadata and some file content are stored in the server in the UTF8 Unicode character set and are translated into the local character set on the client. Additionally, in 2002.1 all error and informational messages returned from the server may be localized by the Perforce administrator. See the accompanying i18nnotes.txt for a full description of Unicode and localization support. Large Installation Performance Enhancements A number of changes have been targeted at large installations (typically those with more than a million files under Perforce control). Labels Command Speedup - #30690 (Job #6531) ** The "p4 labels" command when supplied with a file argument would run very slowly and potentially lock the system out to all users due to the significant amount of scanning that was required per label. This command has now been optimized to position the rev table rather than scan when looking for a match. Pending Changes Speedup - #29365 ** Pending changes in the db.change table are now split into a db.changex table, to speed up the performance of p4win's frequent 'p4 changes -s pending' command invocation. This requires a database upgrade with 'p4d -xu'. Depot Syntax Speedup - #29329 (Job #7069) ** To speed p4win's frequent invocations of 'p4 fstat' on files in the explorer tree, a special optimization has been introduced. Because p4win refers to files using depot syntax, normally the server must scan the client's entire list of files to find the named file. This optimization allows the server to find the file directly if and only if the client's view still reflects the files on the client. This is always the case if the client has done a full sync since last changing the view. Bottom line: if p4win's fstat calls are going slow, try syncing the entire client. Larger Database Pagesize - #27795 ** The server's default database page size has been increased from 4k bytes per page to 8k bytes per page. For large tables this results in more efficient packing with less wasted disk space and better performance. Existing databases continue to work unchanged, but to see the improvement a restore from a checkpoint is needed. New MaxScanRows in 'p4 group' - #27952 ** 'p4 group' now has a 'MaxScanRows' field, which can be used to limit the number of rows that can be retrieved from the rev table during an operation. Use MaxScanRows when MaxResults cannot help control lengthy operations (these operations could typically be speeded up by defining the depot filepath more precisely). By default, users have no limit on the size of scans they can perform. Once a user belongs to one or more groups with any limit, however, that user has the maximum of those groups' limits. This allows, for example, an administrator to create a "novice" group with a low limit, thereby affecting only certain users. See 'p4 help group', 'p4 help maxresults' and 'p4 help maxscanrows' for further information. Minor new functionality in 2002.1 #29455 (Job #1066) ** 'p4 client -t' now copies client options as well as the view. Same for 'p4 label -t'. #28516 ** Server database journalling is now always on, unless explicitly turned off with P4JOURNAL=off. Previously, journalling was disabled if P4JOURNAL was unset and there was no 'journal' file in the server's root directory. The absence of the journal file no longer disables journalling. #28028 ** 'p4 integrate' by default now syncs the target files to the head revision before integrating. To integrate using the current revision had on the client, use the new 'p4 integrate -h' flag. #27808 (Job #982, #1004, #1010, #5518) ** Jobs searching now allows for matching punctuation: in addition to indexing all alphanumeric strings, the job indexer now also indexes all whitespace separated words. So words with embedded punctuation can be matched. To match characters that are normally jobs search expression operators (=^&|()<>), escape them with a \ character. When searching for words with embedded punctuation in text fields, the wildcard (*) operator is useful, as English words often have trailing punctuation (commas, periods, etc). Existing jobs must be reindexed with the 'p4 jobs -R' command for words with punctuation to be found. Warning: this can take considerable time on a system with lots of jobs. It is harmless to interrupt this command or run it more than once. #27227 (Job #449) ** "p4 submit" has a new option "-r", this causes files that have been opened for 'add' or 'edit' on the submitted changelist to remain open after the submit has completed. #26931 (Job #2351, #5516) ** Labels can now contain deleted revisions. You must give an explicit revision specification in the file argument to 'p4 labelsync' for it to include deleted revisions, because normally 'p4 labelsync' includes only files on the client (and clients can't have deleted revisions). By being able to contain deleted revisions, labels can be better used to control the operation of 'p4 integrate' and 'p4 obliterate'. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2001.2 INTERNATIONALIZATION (I18N) SUPPORT The Perforce clients and server have an optional mode of operation where all metadata and some file content are stored in the server in the UTF8 Unicode character set and are translated into the local character set on the client. When running in internationalized mode, all non-file data (identifiers, descriptions, and so on), as well as the content of all files of type "unicode" are translated between the character set specified by the P4CHARSET variable on the client and UTF8 in the server. See the accompanying i18nnotes.txt for a full description of Unicode support. Minor new functionality in 2001.2 #26052 ** "p4 unlock" now has a superuser option "-f", this allows a superuser to unlock any file, usually "unlock" is restricted to files locked by their owner. #25966 ** Performance of many small p4 commands issued rapidly together as might happen with scripts declined in 2001.1. Such performance should be back to pre-2001.1 levels. #24988 ** The p4d server now logs the IP address of its client when the connection is closed unexpectedly. #23682 ** 'p4 changes' now sports -u user and -c client options, to restrict the output to the named user and/or the client. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2001.1 DEFECT TRACKING INTEGRATION SUPPORT In 2000.2 support was introduced for improved integration into external defect tracking systems. This functionality is now supported for general use. PYTHON I/O - #21918 * For ease of scripting the p4 command line client, it now supports a -G flag which formats output and expects input as marshaled Python dictionary objects. FIX STATUS - #21918 ** The jobs schema has been extended to include a 'fix' status, which is a status associated between a job and a change. When the change is submitted, the job takes on the fix's status. 'p4 change', 'p4 submit' and 'p4 fix' now take a -s flag to set a per-fix status, rather than using the default "closed" status. CHANGELIST/JOB UPDATE LOGGING - #21918 ** The new 'p4 logger' command tracks updates to jobs and changelists, enabling external scripting to export such changes. See 'p4 help logger' for more info. BY POPULAR REQUEST SELECTABLE LINE ENDING ON ALL PLATFORMS - #20967 (Job #2207) ** * For users who share workspaces among platforms with different line ending conventions, the Perforce clients now support all common endings (cr/crlf/lf) on all platforms (Macintosh, Windows, UNIX). Specifically, the client option "crlf/nocrlf" has been removed and a new LineEnd field added with a more flexible set of options: mac, unix, win, local, and share. (The old "crlf" is now "local", and the old "nocrlf" is "unix"). mac, unix, and win force files to be read and written with platform-specific line endings (cr, lf, and crlf respectively). "local" reverts to the client's native format. "share" writes unix style (lf) but reads either unix (lf) or windows (crlf) style. EXCLUSIVE OPEN FILES - #20966 (Job #233, #594, #1944) ** Certain files under Perforce control are best not changed concurrently: images, libraries, and other binary files that are difficult or impossible to merge. The Perforce server has a new filetype modifier that disallows multiple opens on the same file, serializing updates. This modifier (+l) can use be used directly on the command line (by 'p4 add', 'p4 edit', 'p4 reopen'), or can be used in the file mapping table managed by 'p4 filetype'. For example, this makes it possible to ensure that all .gif files added are treated as exclusive-open binary files. See 'p4 help filetypes'. OBLITERATING OLD REVISIONS ONLY - #20978 (Job #929) ** 'p4 obliterate' now allows a revision range, so that you can obliterate specific revisions of files. This makes it easier to clear out old, unused revisions but keep the latest, active ones. LABEL REPORTING - #21687 (Job #403) ** 'p4 labels' can now take a file[revRange] argument, to limit the list of labels to those with that particular file/revision. This makes it easy to see what labels are on a particular revision of a file. Minor new functionality in 2001.1 #22316 (Job #5367) ** #0 is now a synonym for #none when specifying (no) revisions. #21725 ** 'p4 integrated' now reports a revision range on the target files, rather than just the last revision integrated. This can only occur for reverse integration records (the ones that reflect a target's contribution back to its source: branch into, merge into, etc), because normal "forward" integration records reflect the creation of the single, newly submitted revision of the target file. #21715 ** * A new 'p4 resolve' option has been introduced: 'ae' (for 'accept edit'). This is the suggested and default option when the user edits the file (with the 'e' option), either to remove conflicts or to make any edit. It is also the option used when merges with conflict markers in them are forcibly accepted. The old 'am' (for 'accept merge') now indicates a purely automated merge, without original user changes. Resolves completed with 'ae' will show up in 'p4 filelog' as 'edit from' records. This new distinction between 'merge from' and 'edit from' assists in determining whether the change should ever be integrated back: purely automated changes need not be, while original user edits should be. Now if a user makes original edits, whether by using the 'e' option in 'p4 resolve' or by re-opening the file for edit with 'p4 edit', they will be candidates for merging back to the source file. #21633 ** The db.have table has been split, with label entries moving out to the new db.label table. This eases database size constraints in two ways: first, just splitting the data means the individual tables will be smaller. Second, having a separate table for labels allows for a more compact storage format: the new format requires about 60% of the old space. This requires a database upgrade with 'p4d -xu'. #21574 ** One of the larger database tables, db.integ, has been split into db.integed and db.resolve. This requires a database upgrade with 'p4d -xu'. #21089 (Job #1509) ** 'p4 resolve -a' of a binary file where both versions are identical now does an automatic "accept theirs." If they are not identical, a manual selection is still required. #21009 (Job #1074, 1339) ** All identifiers (user names, file names, etc) may now contain characters previously considered unprintable, specifically those in the range 0x80-0xFF. Normal ASCII control characters (such as backspace, bell, etc), as well as #, @, %, *, and ... in filenames, are still disallowed. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2000.2 2000.2 includes a number of as yet undocumented internal changes for use by the Perforce Defect Tracking Integration project. Otherwise, 2000.2 is a bugfix only release. Minor new functionality in 2000.2 #19047 (Job #163) ** 'p4 integrate' now supports a new -t flag, which makes 'p4 integrate' propagate the source file's filetype to the target file instead of retaining the target file's previous filetype. #18875 (Job #526) ** The default depot ("depot") no longer must be created before creating other depots. Previously, the default depot was only implicit if there were no other depots defined, and creating another depot would eclipse the default one. Now, the default depot "depot" is implicitly defined as a local depot with mapping 'depot/...' whenever it isn't explicitly defined by 'p4 depot'. #18796 ** The 'p4 jobspec' form has changed slightly: fields that allow only selected values are now listed under a single "Values" entry; fields with defaults are now listed under a single "Presets" entry. Previously, for each such field there was a special entry "Values-" or "Preset-", but that format made it hard to automate the generation of the jobspec. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 2000.1 FILE HANDLING OPTIONS Mapped filetype selection - #15936 (Job #604, #3819) ** * Filetypes for 'p4 add' can now be selected based on the file's name. The new 'p4 typemap' command manages a file name-to-type mapping. If a file's name matches an entry in that table, it will be used in preference over the type sensed by the client program. Note that this change only requires an updated server to work, but old clients will wrongfully report that empty or missing files are being added as text, even when the typemap is used. New clients are required for warning messages that mention the correct type. More keyword expansion - #15900 (Job #387) ** More keywords are now available with ktext files: in addition to $Id$ and $Header$, there is now: $Date$ - date of file submission $DateTime$ - date and time of file submission $Change$ - change of file submission $File$ - just the file name, sans revision $Revision$ - just the revision number, sans file name $Author$ - the user who submitted the file. Notably absent is $Log$ (filelog). It is still anticipated. For compatibility, previously existing ktext files are now named text+ko, which continues to expand just $Id$ and $Header$. In order to take advantage of the new keywords, files must have their type changed with 'p4 edit -t ktext' and resubmitted (presumably updated to include some new keywords). In order to produce valid values for $Change$ and $Date$ (at least), the client program now refreshes ktext files _after_ the changed is committed, rather than just before. If the refresh is interrupted, either by network failure or the user hitting ^C, files not refreshed will not be considered by Perforce to be on the client filesystem, and must be refreshed properly with a subsequent 'p4 sync'. File modification time preserved - #15891 (Job #844, #1254, #2457) ** * File modification times can now be preserved. The client spec's 'modtime' option continues to cause 'p4 sync' to update a file's modtime, but now to the modtime of the file as of the 'p4 submit', rather than the time of the 'p4 submit' itself. Additionally, files with the new +m modifier always have their modtimes set on 'p4 sync', regardless of the client spec's modtime option. New client executables are required for the modtimes to be detected upon 'p4 submit'. Pre-2000.1 client programs will continue to use the time of the 'p4 submit' as the modtime. JOB SEARCHING Wildcards - #14534 (Job #1190, #1414, #2262) ** 'p4 jobs -e expr' now allows the wildcard * in its expression, to allow for partial word matches. This also allows 'jobs' to check for the presence of a text field being set at all ('field=*'). It also makes it easier to search for all jobs except selected ones, as 'jobs -e' doesn't allow a lone "not" (^) operator. E.g. the expression 'job=* ^word' returns all jobs excluding those with 'word' in it, because 'job=*' matches all jobs. See 'p4 help jobview' for more details. Minor new functionality in 2000.1 #16617 ** The new option 'p4 print -o localFile' redirects the output to the named file on the client filesystem. The difference between this and redirecting stdout (via the command shell) is that this creates a file of the proper type (text, binary, symlink, apple, xtext, etc). #16298 (Job #2923) ** 'p4 info' now reports the date, time, and timezone on the server machine. #14126 (Job #14126) ** 'p4 labelsync' now supports a revision range on its file argument, just as 'p4 sync' does. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 99.2 MORE MACINTOSH FILE SUPPORT New 'apple' filetype - #13015 (Job #858, #863, #2699) ** * There is now an alternative mechanism for storing the resource fork and type/creator information of files originating on the Macintosh. The new filetype 'apple' stores the following all under a single depot file name: the data fork, the resource fork, the Finder info (including the type/creator information), and the comment string. These files are encoded into AppleSingle format for storing on the server. The previous mechanism, which stores the data fork under the regular file name and the resource fork and type/creator information under a separate .file name with type 'resource', is still available. When 'apple' type files are synced onto non-Macintosh 99.2 clients, they are decoded into AppleDouble format, with the non-data portion written into a %file. Unlike the 'resource' type .file, the %file is manifested only on the client: the server only knows of the file by its normal name. If a pre-99.2 client syncs an 'apple' type file, it will be unaware of the encoding and get the raw binary contents, which is in AppleSingle format. Users of CWPerforce 99.1 may want to wait for CWPerforce 99.2 before starting to use the 'apple' file type. It is permissible to submit AppleDouble format files from 99.2 non-Macintosh clients or AppleSingle format files from pre-99.2 clients, but the 99.2 Macintosh AppleSingle implementation decodes only DATA, RESOURCE, COMMENT, and FINDERINFO entries. Support for Macintosh Internet Config - #11821 * Internet Config (part of the MacOS 8.x "Internet" control panel) is now used by 'p4 sync' on the Macintosh to map file extensions to Macintosh type/creator. This is overridden by type/creator information stored in 'apple' type files or in companion 'resource' .file's. BRANCHING AND INTEGRATION IMPROVEMENTS 'p4 filelog' follows branch history - #12482 (Job #599, #634, #1690, #2192) ** 'p4 filelog' can now follow branch history. If a file was created by branching, 'p4 filelog -i' displays the revisions of the source file (but only revisions up to the branch point). It properly handles files that were branched from other files which themselves were branched from still other files. No more 2-way text merges - #12354 ** 'p4 integrate' now refuses to arrange a baseless merge unless passed the -i flag. A baseless merge arises when both the source and target files already exist but are not directly related by branching. Previously, 'p4 integrate' would schedule a baseless merge, which 'p4 resolve' would then present as a 2-way text merge. If 'p4 integrate' is forced to schedule a baseless merge, 'p4 resolve' now uses the first rev being merged as the base, rather than attempting a 2-way text merge. This eliminates 2-way text merges altogether. 'p4 integrate' resists mistaken branching - #13292 (Job #2672) ** 'p4 integrate' now specifically disallows branching a file from a non-add revision. This means that it will no longer attempt to re-branch a source file on top of a deleted target file when the source file changes. It also won't delete the target file of an integration if it has changed since it was last integrated into the source. 'p4 integrate -d' overrides this, reverting to pre-99.2 behavior, where it was permitted to mix edits with a deleted file. Reverse integration records always created now - #10627 ** A reverse integration record (one that shows up in 'p4 filelog' as 'xxx into') is now created for each forward integration record (one that shows up in 'p4 filelog' as 'xxx from'). Previously, an "impure" integration -- a branch downgraded to add, or integrate downgraded to edit, or integrate from multiple sources, didn't generate a reverse integration record. This was meant to signal that the target file's changes still needed to be merged back into the source file, but the lack of integration record was confusing to users. Now special "add into" and "edit into" reverse integration records are created. This only affects reporting. ADMINISTRATION New 'p4 admin' command - #11701 ** The new 'p4 admin' command allows the superuser to stop or checkpoint the server. See 'p4 help admin' for command details. Subgroups - #12240 (Job #2301) ** 'p4 group' now allows other groups, rather than just users, to be members of a user group. Journal format changes - #11722, #13174 ** Server journal files are now marked with a version line to prevent them from being used to update a database created from a different checkpoint. Journal files now distinguish between new records being written (with the @pv@ mark) from existing records being replaced (with the new @rv@ mark). Checkpoint naming changed - #11759 (Job #1059) ** The argument to 'p4d -jc' is now a prefix for the name of the checkpoint and journal files, rather than just the name of the checkpoint file. ".ckp.N" and ".jnl.N" are appended to the prefix to generate the checkpoint and journal file names. The prefix path is relative to the server's root directory. NOTE: THIS IS A CHANGE FROM THE USE OF THIS FLAG IN 99.1 AND BEFORE. Journal only flag - #13176 ** 'p4d -jj' copies and truncates the journal, just as 'p4d -jc' does, but without making a checkpoint. This enables a checkpoint to be made offline by building a second database from a previous checkpoint and the newly saved journal (and checkpointing the resulting, second database). Server runs in background - #13167 (Job #729) ** The new 'p4d -d' flag causes it to fork first before accepting connections, so as to act more like a typical UNIX daemon program. The exit status of the parent indicates whether it successfully started up. REMOTE DEPOT SUPPORT BETWEEN UNIX AND NT - #12114 (Job #867) ** Remote depot interaction between UNIX and NT is now usable, but still not complete. In particular, browsing in the Windows GUI is not possible because 'p4 dirs' does not yet work correctly between UNIX and NT. LOCKING WORKSPACES TO A SPECIFIC HOST - #12409 (Job #1242) * ** Client workspace access can now be restricted to a given host by setting the "Host" field in the 'p4 client' form. By default, new client workspaces are now created with the "Host" field set. Delete the field from the form to allow unrestricted access. This functionality requires a 99.2 client and server. The client will take the following as the host name, in order of preference: a name passed as 'p4 -H host' on the command line, the value of $P4HOST in the client's environment, the client host's "hostname" (which is generally platform specific). The restriction is not a security mechanism, as it can be circumvented with the 'p4 -H host' option. It is meant to prevent accidental misuse of a client workspace from the wrong machine. 'p4 info' displays the client host name as determined by the 'p4' command. Minor New Functionality in 99.2 #12805 (Job #708) ** 'p4d -V' now uses $P4ROOT or the '-r root' option to find the license file, so that it can properly display the licensing information. The server root directory now defaults to the current directory if $P4ROOT is unset and '-r root' is not used. Previously, it was a fatal error not to provide a root directory. #12243 ** 'p4 branch' now rejects attempts to save the default view as the actual branch view. The default view is just a sample that won't work. #12103 (Job #2661) * The BEOS p4 client now supports symlinks (as the UNIX p4 clients do). #12073 ** The new 'p4 jobs -r' flag sorts jobs in reverse order by name. Normally, they are sorted in ascending order. #11903 ** 'p4 diff' and 'p4 diff2' now take a -t flag to force a textual diff even for non-text (binary) files. The 'p4 resolve -b' flag has been renamed '-t' to match. #11889 (Job #601) ** * The new client option 'rmdir' causes the p4 client program to attempt to delete the enclosing directory if all files therein have been removed by 'p4 sync', 'p4 integrate', or 'p4 revert'. This action is recursive, in that if removing the directory makes the parent directory empty, that parent directory will be removed as well. #11888 ** 'p4 filelog' now takes a '-m maxRev' flag to limit the number of revisions per file output. #11825 (Job #1405) ** * 'p4 revert' now supports a -a flag, which reverts only unchanged files that are opened for edit or integrate, and that don't have any resolved integration records. 'p4 revert' now avoids refreshing client files which haven't changed. This requires a new p4 client executable. #11486 (Job #2539) ** A branch view that mapped a file back onto itself could, in rare circumstances, cause 'p4 integrate' to attempt to merge the file with itself. Normally, 'p4 integrate' ignores these self-mappings. This confused the logic in 'p4 submit', which assumed a file couldn't be integrated from itself, and lead to bogus integration records and revision records with null fields being created. This has been corrected. #11289 ** 'p4 flush', a command that fakes a 'p4 sync' without moving files, is now part of the documented and supported command list. #11271 ** Branch specifications can now be locked, via an option on the branch specification, just as client and label specs can be locked. #11197 'p4 diff -sx file#rev' now implies -f, namely that it will do the checksum comparison even if the client has the file at the named rev. Normally, 'p4 diff' skips files if the client has the named rev, but -sx is generally used to verify that the client has the right text, so it makes sense to force the comparison. #10769 ** You now only need 'list' access, not 'review', just to view a counter with the 'p4 counter' command. You still need 'review' access to delete or change the counter. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 99.1 PRESUBMIT TRIGGERS - #8594 ** Pre-submit triggers are now supported. These are commands run on the server after the change is created and the files are locked but prior to file transfers taking place, used to provide user-validation of the change being submitted. See 'p4 help triggers' or the manual for more information. LINE COMPRESSION - #8622 (Job #1000) * ** The new client option 'compress' turns on compression of the client/server connection. Both client and server must be 99.1 for this to work. If either client or server are older, this option is silently ignored. Line compression's effectiveness depends on two factors: the nature of the data being transferred and the speed of the link balanced against the processor speed at each end. Because of the repetitive nature of Perforce file names (e.g. //depot/this/that/theotherthing/...), among other factors, compression yields a 10:1 gain on the basic protocol. If text or binary files are being transferred, the gain is roughly the same as compressing the files before submitting them into Perforce. Because compressing data takes CPU cycles, line compression is only effective if the processors can compress faster than the link can pass the data. As a rule of thumb, compression is best for WANs (wide area networks bridging remote locations) and not so good for LANs (local area networks, such as Ethernet). EDITABLE CHANGELISTS - #8744 (Job #14) ** 'p4 change' of a pending changelist now presents the jobs and files associated with the changelist, and allows you to add/delete those jobs and files. Only files from the default changelist can be added, and removing a file causes it to return to the default changelist. 'p4 change' of a submitted changelist now presents the jobs, and allows you to add/delete jobs. Adding a job closes the job as with 'p4 fix'. FLEXIBLE FILETYPES - #7724 ** User-definable filetypes are now supported: individual bits that control how a file is manipulated and stored can now be set when specifying the filetype during 'p4 add', 'edit', or 'reopen'. See 'p4 help filetypes' for more information. NEWLINE TRANSLATION SUPPRESSION - #7880 (Job #333, #695, #940) ** * The new client option 'nocrlf' suppresses newline translation on Macintosh and Windows clients. If this option is set, text files are read and written as binary files on the client, meaning that the newline is passed through untouched. Normally, newline is translated to carriage-return/newline on Windows and carriage-return on Macintosh. Note that the Perforce server uses newlines, not carriage-return/newline, in text files. This is true even with the server on Windows/NT. This option works with pre-99.1 client programs, but 'p4 diff' and 'p4 resolve' will not diff what they think are binary files, and they won't set the execute bit for xtext files. Upgrade to 99.1 clients for full support of 'nocrlf'. P4 DIFF2 OVERHAUL Summary Line - #9151 (Job #1311) ** The header line has been changed to include a (one word) summary indicating content or type mismatches. Comparing binary files - #9127 (Job #1607) ** Diff2 now compares binary files and prints out the line "(... files differ...)" if they are not identical. Quiet flag - #8494 (Job #693, #550) ** Diff2 now takes a '-q' flag to suppress all output for files known to be identical (because they are the same file or because they were branched). Also, 'p4 help diff2' now attempts to explain the output of diff2. Using a branch view - #8306 (Job #799) ** Diff2 can now take -b branch name to specify the pairs of files to be compared. If file arguments are also present, they can further limit the files and specify the revisions for comparison. BIG INSTALLATION ADMINISTRATION MaxResults avoids unwieldy operations - #8720 (Job #1189) ** 'p4 group' now has a 'MaxResults' field, which can be used to limit the size of operations for users in that group. This enables large installations to prevent users from swamping the server with inadvertent, oversized requests (such as 'p4 files //depot/...'). By default, users have no limit on the size of operations they can perform. Once a user belongs to one or more groups with any limit, however, that user has the maximum of those groups' limits. This allows, for example, an administrator to create a "novice" group with a low limit, thereby affecting only certain users. See 'p4 help group' and 'p4 help maxresults' for further info. Access times for clients, branches, labels - #8276, #9648 (Job #1236) ** Branches, clients, and labels now all have last access dates to facilitate finding and deleting old, unused ones. - For branches, the last access is the last time the branch was used with 'p4 integrate' or 'p4 diff2'. - For clients, it is the last time the client was used for any command that _required_ a client (many commands, such as 'p4 describe', 'p4 changes', etc. do not), or when the client was used as a revision specification (@client). - For labels, it is the last time the label was updated with 'p4 labelsync' or when the label was used as a revision specification (@label). Archive validation - #8587 (Job #861) ** 'p4 verify' now can save the MD5 digest (fingerprint) of file revisions and later compare them to verify archive contents. This can be used, for example, to verify that the server's archive is consistent with the metadata after a restore from backup. The saved digests are also used by 'p4 diff' and 'p4 diff2' to avoid having to compute them for their normal operation. This can considerably lighten the server load if these commands are used frequently. See 'p4 help verify' for information. Compressed checkpoints/journals - #8558 (Job #61) ** The server can now generate and read compressed (gzip) checkpoints and journals when the -z flag is used with -jc, -jd, or -jr. The live journal of database updates remains uncompressed. Minor New Functionality in 99.1 #9627, #9754 ** 'p4 integrate' now supports a '-s from' flag, which specifies the source files of an integration when a branch view is used (normally only the target files are allowed). -s also tells it to use the union of the branch view and its reverse (with the target and source files exchanged). #9662 ** The 'p4 fstat' command, long present but undocumented, is now supported. See 'p4 help fstat' for info. The 'p4 -s' flag, also long present but undocumented, is now supported. See 'p4 help usage'. #9260 ** 'p4 jobs' now has a '-m max' flag, like 'p4 changes', to limit the output to the first 'max' jobs. #9240 (Job #1319, #1670) ** 'p4 jobspec' has been altered to handle read-only fields, Required fields, and Default values differently. Now a single 'field-type' flag on the field definition line determines how a field is set (automatically, or otherwise). See 'p4 help jobspec'. #9139, #9649 * ** 'p4 resolve' now takes a -b flag to force it to attempt a 3 way merge, even if the files are binary. It also makes the files editable/diffable in the resolve dialog. When resolving binary files, Perforce uses an 8-bit clean path. This option works with pre-99.1 client programs, but 'p4 resolve' will not or edit diff what it thinks are binary files. #8951 ** The 'p4 client' and 'p4 label' commands now allow you to use '-t template' for existing as well as new clients and labels. This copies a client or label's view from another client or label. #8878 * ** The new 'p4 passwd' command enables you to set the user's password without having it appear on the screen as editing the form for 'p4 user' does. On Windows clients, 'p4 passwd' also sets the password in the registry in the same way that 'p4 set P4PASSWD' does. #8803 ** You can now directly edit any (unlocked) client. Previously, the Perforce server wouldn't allow you to edit a client other than the current one, but that could easily be circumvented by saying "p4 -c xxx client". Now the more direct "p4 client xxx" works. To protect a client against inadvertent updates by other users, you can use the upgraded lock mechanism (see #7787). #8713 (Job #812) ** The new 'p4 counter' command allows users with 'review' access to set and delete counters directly. #8557 (Job #459) ** 'p4 add' now allows you to re-add a file that has been deleted if your client has 'p4 sync'ed to something other than the (deleted) head rev. #8556 (Job #420, #429) ** File patterns in client, label, and branch views can now be quoted (") to allow embedded spaces. The quotes must surround the file pattern. Client roots must now be quoted if they contain spaces. #7848 ** The logging done by setting P4DEBUG to "server=1" now puts all info for each operation on a single line. #7787 (Job #850, #962, #1043, #1144) ** Locking of clients is now possible, and locking of labels and clients has converged to mean: it can't be deleted, and its spec can't be updated except by the owner. As before, 'p4 labelsync' can't be used on locked labels. Now, no commands that affect a client can be used on a locked client, _except by the owner_. The client option 'allwrite', present since 98.2, has now been documented in 'p4 help client'. This option leaves all client files writable. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Major new functionality in 98.2 NEW JOBS FUNCTIONALITY - #6542 ** Jobs have been upgraded. Two major shortcomings have been rectified: lack of configurability and lack of searching. 1. Jobs may now contain user defined fields, rather than a fixed set of fields. This is controlled by the jobspec, which is set by the superuser. The default jobspec is compatible with 97.3 jobs. See 'p4 help jobspec' for redefining the jobspec. 2. Jobs now support a fast searching mechanism. As jobs are entered or updated, text and dates are indexed. The index can be searched by passing the 'p4 jobs' command a search expression with the new '-e jobview' flag. The jobview field in 'p4 user' is likewise now a search expression. See 'p4 help jobs', 'p4 help jobview', 'p4 help user' for more information. EASE OF USE P4CONFIG Names Client Config File - #5955 (Job #349, #773) * The new variable P4CONFIG names a file containing variable settings for the client. If the file can't be found in the current directory, then parent directories are searched for the file. Each variable setting is alone on a line and of the form: P4VAR=value. The variables that can be set for the client are currently: P4CLIENT P4DIFF P4EDITOR P4MERGE P4PASSWD P4PORT P4USER New Revision Specification @date - #5628 ** Wherever revision specifications are supported, @date and "@datetime" can now be used in addition to @change and @label. The format for date is YYYY/MM/DD, and the format for datetime is YYYY/MM/DD:HH:MM:SS. If no time is given, midnight is assumed. Syncing Specific Revisions - #5808 ** 'p4 sync', 'p4 files', and 'p4 print' now allow their file specifications to include a revision range, which limits their operation to files affected within that range. Previously, only the top revision could be specified, and all files as of that revision were considered. This makes it possible to take a single change ('p4 sync @n,n') or to display the files affected between two labels ('p4 files @lab1,lab2'). PROTECTIONS/GROUP User Authentication - #6323 * ** Simple user authentication is now supported. Each user may have an optional password set via 'p4 user'. The password is provided by the client either by setting the new $P4PASSWD variable or by using p4's new '-P passwd' flag. To make use of passwords, both the client and server must be 98.2 or later. If an older client attempts to connect to the server and the user has a password, the server will reject the connection. SETTING THE PASSWORD WITH 'P4 USER' WILL TRANSMIT THE PASSWORD IN THE CLEAR, AND SHOULD BE DONE LOCALLY ON THE SERVER MACHINE OR OVER NETWORKS THAT ARE TRUSTED. The authentication protocol itself does not transmit the password. Protection Groups - #6355 (Job #637) ** User groups are now supported for use with the 'p4 protect' command. Groups are created, updated, and displayed with the new 'p4 group' and 'p4 groups' command. Lines in the protection table managed by 'p4 protect' now have an indicator as to whether they apply to individual users or to a group. Unauthorized Access Doesn't Use a License - #6427 ** Entries in the user table are now created only after the access level check completes, so that if a user does not have access to the server, then he will not accidentally consume a user license. Protection Levels Make More Sense - #6484, #6471, #5310 ** Non-superusers can now use the depot/group/jobspec commands with the -o flag, as that makes them display only commands. A superuser (a user with 'super' access granted by 'p4 protect') can now create a new user with 'p4 user -f username'. If a user has 'list' but not 'read' access to a file (as granted by 'p4 protect') and attempts to 'p4 sync' the file, the file will now be deleted. Previously, it just pretended the client didn't have the file (and did nothing to it). This allows for part of the depot to be made obsolescent by granting only list access. New "Force" Flags Empower Superusers - #5511 ** The 'branch', 'client', 'label', 'job', and 'user' commands all now take a -f flag to force actions: deleting entities not owned by the current user and setting the modified date of entities. The -f flag requires superuser access. Directly Invoking p4d - #2884 * ** UNIX ONLY. The p4 client program can now directly invoke the p4d server program by setting P4PORT to "rsh:p4d -ir _root_". The "rsh:" instructs the client to run the program following the :, and the -i flag makes p4d run once with its stdin/stdout as the communications pipe. By setting P4PORT to "rsh:rsh host cmd" it is possible to invoke a server on a remote machine, if "cmd" is either the invocation of p4d or a wrapper script which does as much. DATABASE UPGRADES New database format with flexnames - #5312 ** All identifiers may now be of arbitrary lengths. Previously, identifiers were limited to lengths of 32 (user names), 64 (client/label/branch/job names), or 128 (file name) bytes. Because the data is now manipulated using the actual size of the data, rather than the maximum size, the disk and memory usage for the Perforce server has shrunk considerably. Databases are typically 1/3 to 1/2 of their former size, and memory use is commensurately smaller. Because much less data is moved around, the server Performs much better, especially on large queries which previously caused the server to page. Big Databases for SGI Irix - #5713 ** The p4d server now supports database files in excess of 2GB on SGI Irix. Typically, it is the db.have ("have" and label lists) that grows the most, and on large installations these database files have approached the 2GB limit. Now the internal limit for database files is 8TB (8000 GB) for SGI Irix. Upwardly Compatible Checkpoints/Journals - #5313 ** Checkpoint and journal files now have a version number on each line that indicates the format of the line. This will allow checkpoints from previous releases and journals made from multiple releases to be handled properly. Previously, a server could read checkpoints and journals only from the same release level. Most database upgrades are handled by compatibility code for the binary database itself. In some cases, however, it will be necessary to checkpoint and restore in order to upgrade releases. In those cases the compatibility of checkpoints (and journals) will come into play. LIBRARIAN Lazy Copy on Resolve - #5320 ** 'p4 resolve' 'accept theirs' now gets the text of the new revision of the file by doing a lazy copy from the integrated file, rather than taking the text from the client. When using 'p4 integrate' to copy one set of files on top of another, the lazy copy can save space. Compressed File Types - #6120 ** Compressed file types are now supported for text and binary files. The existing binary, xbinary, and resource types have become compressed types, with the old uncompressed types being renamed to ubinary, uxbinary, and uresource. There is also a new ctext and cxtext for storing compressed text. Compressed types are stored in gzip format on the server, but otherwise behave like regular text and binary files on the client. New "Temporary Object" File Types - #6113 ** Two new file types are now supported: tempobj and xtempobj. Both are binary files that are always left writable on the client and only have the head revision stored in the server. xtempobj also has the execute permission set on the client. $Id:$ Now Expands More Like RCS - #6042 (Job #819) ** $Id:$ in ktext and kxtext files are now expanded with a space before the final $, so as to be compatible with RCS and its "ident" program. This makes current ktext files look different according to 'p4 diff -se', so users of that command should refresh their ktext files with 'p4 sync -f'. $Header:$ Mimics $Id:$ - #5608 ** The keyword $Header:$ is now supported for ktext type files. It expands the same as $Id:$. Minor New Functionality in 98.2 #6559 ** The p4d server process id is now logged in the error log along with the date, client, command, etc when command logging is turned on. Turn command logging on by setting P4DEBUG to "server=1". #6360 ** 'p4 opened' now sports a '-c changelist#' to restrict output to the given changelist number. #6021 (Job #833) ** 'p4 where' now also outputs the local name of the mapped file. This is in addition to displaying the name in both depot and client form in Perforce syntax. #5381 (Job #709) ** 'p4 filelog' now includes the filetype at each rev. #5369 (Job #694) ** All ASCII forms are now more tolerant of indenting. Except for text blocks (where the indent is exactly the first white space), values in the forms may be arbitrarily indented, as long as they are indented at all. This makes 'p4 submit' more immune to accidental alterations to the 'Files:' list. 'p4 submit' now has a kinder, gentler message when a file appears in the list that wasn't part of the default changelist. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Upgrading from 97.3 and earlier. 1. NEW DATABASE FORMAT WITH FLEXNAMES. The 98.2+ database is not compatible with earlier databases. You must convert it using a 97.3 checkpoint (checkpoints from earlier releases will not be compatible): /path/to/97.3/p4d -r$P4ROOT -jc checkpoint.97.3 (remove the $P4ROOT/db.* files) /path/to/98.2/p4d -r$P4ROOT -jr checkpoint.97.3 The Windows/NT installer will perform this upgrade automatically for you if you do not do it yourself. See change #5312 for details on flexnames. 2. NEW JOBS SUPPORT. Jobs data (if any) must be upgraded after restarting from pre-98.2. To convert, issue the client command: p4 jobs -R You must have 'superuser' access, as granted by 'p4 protect' to use this flag. It is harmless to run this more than once. Note: the jobview field of the user form is not automatically converted. Users must replace their jobviews. The new jobviews that correspond to the old ones are: Old JobView New JobView ----------- ----------- all status=open mine user=username status=open replacing 'username' as appropriate. 3. The new password support (see change #6323) requires 98.2 or newer clients and servers. You cannot set the password if the client program is earlier than 98.2, and once the password is set you cannot connect at all with old client programs. 4. You cannot mix a 98.2 server with a lower version server using remote depots. Further, remote depots between Unix and NT do not work correctly because of the different sort ordering. 5. $Id:$ EXPANSION CHANGED. $Id:$ in ktext files now expands with a space before the final $, like RCS. This makes current ktext files look different according to 'p4 diff -se', so users of that command should refresh their ktext files with 'p4 sync -f'.